mirror of
https://github.com/correl/mage.git
synced 2024-12-24 11:50:45 +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("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("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("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));
|
||||
|
|
|
@ -3,7 +3,7 @@ package mage.cards.[=$cardNameFirstLetter=];
|
|||
import java.util.UUID;[=
|
||||
if ($power || $power eq 0) {
|
||||
if ($planeswalker eq 'true') {
|
||||
$OUT .= "\nimport mage.abilities.common.PlaneswalkerEntersWithLoyalityCountersAbility;"
|
||||
$OUT .= "\nimport mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;"
|
||||
}else {
|
||||
$OUT .= "\nimport mage.MageInt;"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue