diff --git a/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java b/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java new file mode 100644 index 00000000000..d44a1d053e1 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java @@ -0,0 +1,72 @@ +package mage.cards.b; + +import mage.abilities.common.SagaAbility; +import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect; +import mage.abilities.effects.common.PutOnLibraryTargetEffect; +import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; +import mage.abilities.keyword.TransformAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SagaChapter; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.target.common.TargetCardInLibrary; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BoseijuReachesSkyward extends CardImpl { + + private static final FilterCard filter = new FilterCard("basic Forest cards"); + + static { + filter.add(SuperType.BASIC.getPredicate()); + filter.add(SubType.FOREST.getPredicate()); + } + + public BoseijuReachesSkyward(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}"); + + this.subtype.add(SubType.SAGA); + this.secondSideCardClazz = mage.cards.b.BranchOfBoseiju.class; + + // (As this Saga enters and after your draw step, add a lore counter.) + SagaAbility sagaAbility = new SagaAbility(this, SagaChapter.CHAPTER_III); + + // I — Search your library for up to two basic Forest cards, reveal them, put them into your hand, then shuffle. + sagaAbility.addChapterEffect( + this, SagaChapter.CHAPTER_I, + new SearchLibraryPutInHandEffect(new TargetCardInLibrary( + 0, 2, filter + ), true, true) + ); + + // II — Put up to one target land card from your graveyard on top of your library. + sagaAbility.addChapterEffect( + this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_II, + new PutOnLibraryTargetEffect(true), + new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_LAND) + ); + + // 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 BoseijuReachesSkyward(final BoseijuReachesSkyward card) { + super(card); + } + + @Override + public BoseijuReachesSkyward copy() { + return new BoseijuReachesSkyward(this); + } +} diff --git a/Mage.Sets/src/mage/cards/b/BranchOfBoseiju.java b/Mage.Sets/src/mage/cards/b/BranchOfBoseiju.java new file mode 100644 index 00000000000..7f721738d42 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BranchOfBoseiju.java @@ -0,0 +1,47 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.LandsYouControlCount; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BranchOfBoseiju extends CardImpl { + + public BranchOfBoseiju(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, ""); + + this.subtype.add(SubType.PLANT); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + this.color.setGreen(true); + this.nightCard = true; + + // Reach + this.addAbility(ReachAbility.getInstance()); + + // Branch of Boseiju gets +1/+1 for each land you control. + this.addAbility(new SimpleStaticAbility(new BoostSourceEffect( + LandsYouControlCount.instance, LandsYouControlCount.instance, Duration.WhileOnBattlefield + ).setText("{this} gets +1/+1 for each land you control"))); + } + + private BranchOfBoseiju(final BranchOfBoseiju card) { + super(card); + } + + @Override + public BranchOfBoseiju copy() { + return new BranchOfBoseiju(this); + } +} diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 832cd0078f6..8cf8a91d4d7 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -35,6 +35,8 @@ public final class KamigawaNeonDynasty extends ExpansionSet { 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)); cards.add(new SetCardInfo("Biting-Palm Ninja", 88, Rarity.RARE, mage.cards.b.BitingPalmNinja.class)); + cards.add(new SetCardInfo("Boseiju Reaches Skyward", 177, Rarity.UNCOMMON, mage.cards.b.BoseijuReachesSkyward.class)); + cards.add(new SetCardInfo("Branch of Boseiju", 177, Rarity.UNCOMMON, mage.cards.b.BranchOfBoseiju.class)); cards.add(new SetCardInfo("Bronzeplate Boar", 135, Rarity.UNCOMMON, mage.cards.b.BronzeplateBoar.class)); cards.add(new SetCardInfo("Covert Technician", 49, Rarity.UNCOMMON, mage.cards.c.CovertTechnician.class)); cards.add(new SetCardInfo("Dokuchi Shadow-Walker", 94, Rarity.COMMON, mage.cards.d.DokuchiShadowWalker.class));