mirror of
https://github.com/correl/mage.git
synced 2025-01-11 19:13:02 +00:00
Implemented Kaya, Orzhov Usurper
This commit is contained in:
parent
8c95d89fb7
commit
25878eb4f4
3 changed files with 147 additions and 1 deletions
145
Mage.Sets/src/mage/cards/k/KayaOrzhovUsurper.java
Normal file
145
Mage.Sets/src/mage/cards/k/KayaOrzhovUsurper.java
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
package mage.cards.k;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.LoyaltyAbility;
|
||||||
|
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.ExileTargetEffect;
|
||||||
|
import mage.cards.*;
|
||||||
|
import mage.constants.*;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.filter.common.FilterNonlandPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.players.Player;
|
||||||
|
import mage.target.Target;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.TargetPlayer;
|
||||||
|
import mage.target.common.TargetCardInASingleGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public final class KayaOrzhovUsurper extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterPermanent filter
|
||||||
|
= new FilterNonlandPermanent("permanent with converted mana cost 1 or less");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
public KayaOrzhovUsurper(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{W}{B}");
|
||||||
|
|
||||||
|
this.addSuperType(SuperType.LEGENDARY);
|
||||||
|
this.subtype.add(SubType.KAYA);
|
||||||
|
this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3));
|
||||||
|
|
||||||
|
// +1: Exile up to two target cards from a single graveyard. You gain 2 life if at least one creature card was exiled this way.
|
||||||
|
Ability ability = new LoyaltyAbility(new KayaOrzhovUsurperExileEffect(), 1);
|
||||||
|
ability.addTarget(new TargetCardInASingleGraveyard(0, 2, StaticFilters.FILTER_CARD));
|
||||||
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
// -1: Exile target nonland permanent with converted mana cost 1 or less.
|
||||||
|
ability = new LoyaltyAbility(new ExileTargetEffect(), -1);
|
||||||
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
// -5: Kaya, Orzhov Usurper deals damage to target player equal to the number of cards that player owns in exile and you gain that much life.
|
||||||
|
ability = new LoyaltyAbility(new KayaOrzhovUsurperDamageEffect(), -5);
|
||||||
|
ability.addTarget(new TargetPlayer());
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
private KayaOrzhovUsurper(final KayaOrzhovUsurper card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KayaOrzhovUsurper copy() {
|
||||||
|
return new KayaOrzhovUsurper(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class KayaOrzhovUsurperExileEffect extends OneShotEffect {
|
||||||
|
|
||||||
|
KayaOrzhovUsurperExileEffect() {
|
||||||
|
super(Outcome.Benefit);
|
||||||
|
staticText = "Exile up to two target cards from a single graveyard. " +
|
||||||
|
"You gain 2 life if at least one creature card was exiled this way.";
|
||||||
|
}
|
||||||
|
|
||||||
|
private KayaOrzhovUsurperExileEffect(final KayaOrzhovUsurperExileEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KayaOrzhovUsurperExileEffect copy() {
|
||||||
|
return new KayaOrzhovUsurperExileEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Player player = game.getPlayer(source.getControllerId());
|
||||||
|
if (player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Cards cards = new CardsImpl();
|
||||||
|
for (Target target : source.getTargets()) {
|
||||||
|
for (UUID targetId : target.getTargets()) {
|
||||||
|
Card card = game.getCard(targetId);
|
||||||
|
if (card != null) {
|
||||||
|
cards.add(card);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
player.moveCards(cards, Zone.EXILED, source, game);
|
||||||
|
for (Card card : cards.getCards(game)) {
|
||||||
|
if (card != null && card.isCreature()) {
|
||||||
|
player.gainLife(2, game, source);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class KayaOrzhovUsurperDamageEffect extends OneShotEffect {
|
||||||
|
|
||||||
|
KayaOrzhovUsurperDamageEffect() {
|
||||||
|
super(Outcome.Benefit);
|
||||||
|
staticText = "{this} deals damage to target player equal to the number of cards " +
|
||||||
|
"that player owns in exile and you gain that much life.";
|
||||||
|
}
|
||||||
|
|
||||||
|
private KayaOrzhovUsurperDamageEffect(final KayaOrzhovUsurperDamageEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KayaOrzhovUsurperDamageEffect copy() {
|
||||||
|
return new KayaOrzhovUsurperDamageEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
|
Player player = game.getPlayer(source.getFirstTarget());
|
||||||
|
if (controller == null || player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int count = 0;
|
||||||
|
for (Card card : game.getExile().getAllCards(game)) {
|
||||||
|
if (card != null && card.getOwnerId().equals(player.getId())) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
player.damage(count, source.getSourceId(), game, false, true);
|
||||||
|
controller.gainLife(count, game, source);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -56,6 +56,7 @@ public final class RavnicaAllegiance extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Imperious Oligarch", 184, Rarity.COMMON, mage.cards.i.ImperiousOligarch.class));
|
cards.add(new SetCardInfo("Imperious Oligarch", 184, Rarity.COMMON, mage.cards.i.ImperiousOligarch.class));
|
||||||
cards.add(new SetCardInfo("Incubation // Incongruity", 226, Rarity.UNCOMMON, mage.cards.i.IncubationIncongruity.class));
|
cards.add(new SetCardInfo("Incubation // Incongruity", 226, Rarity.UNCOMMON, mage.cards.i.IncubationIncongruity.class));
|
||||||
cards.add(new SetCardInfo("Judith, the Scourge Diva", 185, Rarity.RARE, mage.cards.j.JudithTheScourgeDiva.class));
|
cards.add(new SetCardInfo("Judith, the Scourge Diva", 185, Rarity.RARE, mage.cards.j.JudithTheScourgeDiva.class));
|
||||||
|
cards.add(new SetCardInfo("Kaya, Orzhov Usurper", 186, Rarity.MYTHIC, mage.cards.k.KayaOrzhovUsurper.class));
|
||||||
cards.add(new SetCardInfo("Light Up the Stage", 107, Rarity.UNCOMMON, mage.cards.l.LightUpTheStage.class));
|
cards.add(new SetCardInfo("Light Up the Stage", 107, Rarity.UNCOMMON, mage.cards.l.LightUpTheStage.class));
|
||||||
cards.add(new SetCardInfo("Mortify", 192, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
|
cards.add(new SetCardInfo("Mortify", 192, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
|
||||||
cards.add(new SetCardInfo("Orzhov Guildgate", 252, Rarity.COMMON, mage.cards.o.OrzhovGuildgate.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Orzhov Guildgate", 252, Rarity.COMMON, mage.cards.o.OrzhovGuildgate.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
@ -3,7 +3,7 @@ package mage.cards.[=$cardNameFirstLetter=];
|
||||||
import java.util.UUID;[=
|
import java.util.UUID;[=
|
||||||
if ($power || $power eq 0) {
|
if ($power || $power eq 0) {
|
||||||
if ($planeswalker eq 'true') {
|
if ($planeswalker eq 'true') {
|
||||||
$OUT .= "\nimport mage.abilities.common.PlaneswalkerEntersWithLoyalityCountersAbility;"
|
$OUT .= "\nimport mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;"
|
||||||
}else {
|
}else {
|
||||||
$OUT .= "\nimport mage.MageInt;"
|
$OUT .= "\nimport mage.MageInt;"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue