-
Notifications
You must be signed in to change notification settings - Fork 786
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add set [YNEO] with six cards; add two [J21] cards plus reprints (#12692
- Loading branch information
1 parent
614fae9
commit 44fb947
Showing
12 changed files
with
569 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package mage.cards.b; | ||
|
||
import java.util.Arrays; | ||
import java.util.Collections; | ||
import java.util.List; | ||
import java.util.UUID; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.Ability; | ||
import mage.abilities.common.EntersBattlefieldTriggeredAbility; | ||
import mage.abilities.effects.common.DraftFromSpellbookEffect; | ||
import mage.constants.SubType; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
|
||
/** | ||
* @author Svyatoslav28 | ||
*/ | ||
public final class BoseijuPathlighter extends CardImpl { | ||
|
||
private static final List<String> spellbook = Collections.unmodifiableList(Arrays.asList( | ||
"Bonders' Enclave", | ||
"Boseiju, Who Endures", | ||
"Emergence Zone", | ||
"Field of Ruin", | ||
"Gingerbread Cabin", | ||
"Hall of Oracles", | ||
"Khalni Garden", | ||
"Memorial to Unity", | ||
"Mobilized District", | ||
"Radiant Fountain", | ||
"Roadside Reliquary", | ||
"Scavenger Grounds", | ||
"Secluded Courtyard", | ||
"Thriving Grove", | ||
"Treasure vault" | ||
)); | ||
|
||
public BoseijuPathlighter(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); | ||
|
||
this.subtype.add(SubType.HUMAN); | ||
this.subtype.add(SubType.ROGUE); | ||
this.power = new MageInt(3); | ||
this.toughness = new MageInt(2); | ||
|
||
// When Boseiju Pathlighter enters the battlefield, draft a card from Boseiju Pathlighter's spellbook. | ||
Ability ability = new EntersBattlefieldTriggeredAbility(new DraftFromSpellbookEffect(spellbook)); | ||
this.addAbility(ability); | ||
} | ||
|
||
private BoseijuPathlighter(final BoseijuPathlighter card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public BoseijuPathlighter copy() { | ||
return new BoseijuPathlighter(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
package mage.cards.d; | ||
|
||
import java.util.UUID; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.common.CrewIncreasedPowerAbility; | ||
import mage.abilities.common.EntersBattlefieldTriggeredAbility; | ||
import mage.abilities.effects.common.ConjureCardEffect; | ||
import mage.constants.SubType; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
|
||
/** | ||
* @author Svyatoslav28 | ||
*/ | ||
public final class DragonflyPilot extends CardImpl { | ||
|
||
public DragonflyPilot(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); | ||
|
||
this.subtype.add(SubType.FOX); | ||
this.subtype.add(SubType.PILOT); | ||
this.power = new MageInt(1); | ||
this.toughness = new MageInt(1); | ||
|
||
// When Dragonfly Pilot enters the battlefield, conjure a card named Dragonfly Suit into your hand. | ||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ConjureCardEffect("Dragonfly Suit"))); | ||
// Dragonfly Pilot crews Vehicles as though its power were 2 greater. | ||
this.addAbility(new CrewIncreasedPowerAbility()); | ||
} | ||
|
||
private DragonflyPilot(final DragonflyPilot card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public DragonflyPilot copy() { | ||
return new DragonflyPilot(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package mage.cards.e; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.Ability; | ||
import mage.abilities.common.CrewIncreasedPowerAbility; | ||
import mage.abilities.common.SimpleActivatedAbility; | ||
import mage.abilities.costs.common.DiscardTargetCost; | ||
import mage.abilities.costs.mana.ManaCostsImpl; | ||
import mage.abilities.effects.common.DraftFromSpellbookEffect; | ||
import mage.abilities.keyword.WardAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.SubType; | ||
import mage.filter.StaticFilters; | ||
import mage.target.common.TargetCardInHand; | ||
|
||
import java.util.Arrays; | ||
import java.util.Collections; | ||
import java.util.List; | ||
import java.util.UUID; | ||
|
||
/** | ||
* @author Svyatoslav28 | ||
*/ | ||
public final class ExperimentalPilot extends CardImpl { | ||
|
||
private static final List<String> spellbook = Collections.unmodifiableList(Arrays.asList( | ||
"Bomat Bazaar Barge", | ||
"Cultivator's Caravan", | ||
"Daredevil Dragster", | ||
"Demolition Stomper", | ||
"Futurist Sentinel", | ||
"High-Speed Hoverbike", | ||
"Mechtitan Core", | ||
"Mindlink Mech", | ||
"Mobile Garrison", | ||
"Ovalchase Dragster", | ||
"Raiders' Karve", | ||
"Reckoner Bankbuster", | ||
"Silent Submersible", | ||
"Thundering Chariot", | ||
"Untethered Express" | ||
)); | ||
|
||
public ExperimentalPilot(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}"); | ||
|
||
this.subtype.add(SubType.HUMAN); | ||
this.subtype.add(SubType.PILOT); | ||
this.power = new MageInt(1); | ||
this.toughness = new MageInt(2); | ||
|
||
// Ward {2} | ||
this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}"))); | ||
|
||
// {U}, Discard two cards: Draft a card from Experimental Pilot's spellbook. | ||
Ability ability = new SimpleActivatedAbility( | ||
new DraftFromSpellbookEffect(spellbook), new ManaCostsImpl<>("{U}") | ||
); | ||
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, StaticFilters.FILTER_CARD_CARDS))); | ||
this.addAbility(ability); | ||
// Experimental Pilot crews Vehicles as though its power were 2 greater. | ||
this.addAbility(new CrewIncreasedPowerAbility()); | ||
} | ||
|
||
private ExperimentalPilot(final ExperimentalPilot card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public ExperimentalPilot copy() { | ||
return new ExperimentalPilot(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
|
||
package mage.cards.j; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.Ability; | ||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; | ||
import mage.abilities.effects.OneShotEffect; | ||
import mage.abilities.keyword.NinjutsuAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.Outcome; | ||
import mage.constants.SubType; | ||
import mage.filter.StaticFilters; | ||
import mage.game.Game; | ||
import mage.players.Player; | ||
|
||
import java.util.UUID; | ||
|
||
|
||
/** | ||
* @author Svyatoslav28 | ||
*/ | ||
|
||
public final class JukaiLiberator extends CardImpl { | ||
|
||
public JukaiLiberator(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); | ||
|
||
this.subtype.add(SubType.SNAKE); | ||
this.subtype.add(SubType.NINJA); | ||
this.power = new MageInt(3); | ||
this.toughness = new MageInt(3); | ||
|
||
// Ninjutsu {1}{G} | ||
this.addAbility(new NinjutsuAbility("{1}{G}")); | ||
|
||
// Whenever Jukai Liberator deals combat damage to a player, choose land or nonland. Seek a permanent card of the chosen type. | ||
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new JukaiLiberatorEffect()); | ||
this.addAbility(ability); | ||
} | ||
|
||
private JukaiLiberator(final JukaiLiberator card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public JukaiLiberator copy() { | ||
return new JukaiLiberator(this); | ||
} | ||
} | ||
|
||
class JukaiLiberatorEffect extends OneShotEffect { | ||
|
||
JukaiLiberatorEffect() { | ||
super(Outcome.Benefit); | ||
staticText = "choose land or nonland." + | ||
" Seek a permanent card of the chosen kind."; | ||
} | ||
|
||
private JukaiLiberatorEffect(final JukaiLiberatorEffect effect) { | ||
super(effect); | ||
} | ||
|
||
@Override | ||
public JukaiLiberatorEffect copy() { | ||
return new JukaiLiberatorEffect(this); | ||
} | ||
|
||
@Override | ||
public boolean apply(Game game, Ability source) { | ||
Player player = game.getPlayer(source.getControllerId()); | ||
if (player == null) { | ||
return false; | ||
} | ||
boolean land = player.chooseUse( | ||
Outcome.Neutral, "Choose land or nonland", null, | ||
"Land", "Nonland", source, game | ||
); | ||
if (land) { | ||
player.seekCard(StaticFilters.FILTER_CARD_LAND, source, game); | ||
} else { | ||
player.seekCard(StaticFilters.FILTER_CARD_NON_LAND, source, game); | ||
} | ||
return true; | ||
} | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package mage.cards.k; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.common.EntersBattlefieldTriggeredAbility; | ||
import mage.abilities.effects.common.ConjureCardEffect; | ||
import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect; | ||
import mage.abilities.keyword.ChannelAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.SubType; | ||
import mage.constants.Zone; | ||
import mage.filter.StaticFilters; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author Svyatoslav28 | ||
*/ | ||
public final class KamiOfBambooGroves extends CardImpl { | ||
|
||
public KamiOfBambooGroves(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{G}"); | ||
|
||
this.subtype.add(SubType.SPIRIT); | ||
this.power = new MageInt(1); | ||
this.toughness = new MageInt(1); | ||
|
||
// When Kami of Bamboo Groves enters the battlefield, you may put a land card from your hand onto the battlefield tapped. | ||
this.addAbility(new EntersBattlefieldTriggeredAbility(new PutCardFromHandOntoBattlefieldEffect( | ||
StaticFilters.FILTER_CARD_LAND_A, false, true | ||
), false)); | ||
// Channel -- {2}{G}, Discard Kami of Bamboo Groves: Conjure two cards named Forest into your hand. | ||
this.addAbility(new ChannelAbility("{2}{G}", new ConjureCardEffect("Forest", Zone.HAND, 2))); | ||
} | ||
|
||
private KamiOfBambooGroves(final KamiOfBambooGroves card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public KamiOfBambooGroves copy() { | ||
return new KamiOfBambooGroves(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package mage.cards.k; | ||
|
||
import mage.abilities.Ability; | ||
import mage.abilities.LoyaltyAbility; | ||
import mage.abilities.costs.common.SacrificeTargetCost; | ||
import mage.abilities.effects.common.*; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.Duration; | ||
import mage.constants.SubType; | ||
import mage.constants.SuperType; | ||
import mage.filter.FilterPermanent; | ||
import mage.filter.StaticFilters; | ||
import mage.game.permanent.token.KrakenToken; | ||
import mage.target.TargetPermanent; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author Svyatoslav28 | ||
*/ | ||
public final class KioraTheTidesFury extends CardImpl { | ||
private static final FilterPermanent filter = new FilterPermanent (SubType.KRAKEN, "Kraken"); | ||
|
||
public KioraTheTidesFury(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{U}"); | ||
this.supertype.add(SuperType.LEGENDARY); | ||
this.subtype.add(SubType.KIORA); | ||
|
||
this.setStartingLoyalty(4); | ||
|
||
// +1: Conjure a card named Kraken Hatchling into your hand. | ||
LoyaltyAbility ability = new LoyaltyAbility((new ConjureCardEffect("Kraken Hatchling")), 1); | ||
this.addAbility(ability); | ||
|
||
// +1: Untap target creature or land. Prevent all damage that would be dealt to and dealt by that permanent until your next turn. | ||
Ability secondAbility = new LoyaltyAbility(new UntapTargetEffect(), 1); | ||
secondAbility.addEffect(new PreventDamageToTargetEffect(Duration.UntilYourNextTurn) | ||
.setText("Prevent all damage that would be dealt to")); | ||
secondAbility.addEffect(new PreventDamageByTargetEffect(Duration.UntilYourNextTurn, false) | ||
.setText(" and dealt by that permanent until your next turn.")); | ||
secondAbility.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_LAND)); | ||
this.addAbility(secondAbility); | ||
|
||
|
||
// −3: You may sacrifice a Kraken. If you do, create an 8/8 blue Kraken creature token. | ||
this.addAbility(new LoyaltyAbility(new DoIfCostPaid( | ||
new CreateTokenEffect(new KrakenToken()), | ||
new SacrificeTargetCost(filter)), | ||
-3)); | ||
} | ||
|
||
private KioraTheTidesFury(final KioraTheTidesFury card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public KioraTheTidesFury copy() { | ||
return new KioraTheTidesFury(this); | ||
} | ||
} | ||
|
Oops, something went wrong.