mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
[FIC] Implement Celes, Rune Knight (#13442)
This commit is contained in:
parent
d242d19a72
commit
ca3d0b7ba5
4 changed files with 126 additions and 1 deletions
121
Mage.Sets/src/mage/cards/c/CelesRuneKnight.java
Normal file
121
Mage.Sets/src/mage/cards/c/CelesRuneKnight.java
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
package mage.cards.c;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.EntersBattlefieldOneOrMoreTriggeredAbility;
|
||||||
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.counter.AddCountersAllEffect;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.SuperType;
|
||||||
|
import mage.constants.TargetController;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.counters.CounterType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.events.ZoneChangeEvent;
|
||||||
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.game.stack.Spell;
|
||||||
|
import mage.players.Player;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author balazskristof
|
||||||
|
*/
|
||||||
|
public final class CelesRuneKnight extends CardImpl {
|
||||||
|
|
||||||
|
public CelesRuneKnight(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}{B}");
|
||||||
|
|
||||||
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
|
this.subtype.add(SubType.HUMAN);
|
||||||
|
this.subtype.add(SubType.WIZARD);
|
||||||
|
this.subtype.add(SubType.KNIGHT);
|
||||||
|
this.power = new MageInt(4);
|
||||||
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
|
// When Celes enters, discard any number of cards, then draw that many cards plus one.
|
||||||
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new CelesRuneKnightEffect()));
|
||||||
|
|
||||||
|
// Whenever one or more other creatures you control enter, if one or more of them entered from a graveyard or was cast from a graveyard, put a +1/+1 counter on each creature you control.
|
||||||
|
this.addAbility(new CelesRuneKnightTriggeredAbility());
|
||||||
|
}
|
||||||
|
|
||||||
|
private CelesRuneKnight(final CelesRuneKnight card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CelesRuneKnight copy() {
|
||||||
|
return new CelesRuneKnight(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CelesRuneKnightEffect extends OneShotEffect {
|
||||||
|
|
||||||
|
CelesRuneKnightEffect() {
|
||||||
|
super(Outcome.DrawCard);
|
||||||
|
staticText = "discard any number of cards, then draw that many cards plus one";
|
||||||
|
}
|
||||||
|
|
||||||
|
private CelesRuneKnightEffect(final CelesRuneKnightEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CelesRuneKnightEffect copy() {
|
||||||
|
return new CelesRuneKnightEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Player player = game.getPlayer(source.getControllerId());
|
||||||
|
if (player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int discarded = player.discard(0, Integer.MAX_VALUE, false, source, game).size();
|
||||||
|
game.processAction();
|
||||||
|
player.drawCards(discarded + 1, source, game);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CelesRuneKnightTriggeredAbility extends EntersBattlefieldOneOrMoreTriggeredAbility {
|
||||||
|
|
||||||
|
CelesRuneKnightTriggeredAbility() {
|
||||||
|
super(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE), StaticFilters.FILTER_OTHER_CONTROLLED_CREATURES, TargetController.YOU);
|
||||||
|
setTriggerPhrase("Whenever one or more other creatures you control enter, "
|
||||||
|
+ "if one or more of them entered from a graveyard or was cast from a graveyard, ");
|
||||||
|
}
|
||||||
|
|
||||||
|
private CelesRuneKnightTriggeredAbility(final CelesRuneKnightTriggeredAbility ability) {
|
||||||
|
super(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CelesRuneKnightTriggeredAbility copy() {
|
||||||
|
return new CelesRuneKnightTriggeredAbility(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checkEvent(ZoneChangeEvent event, Game game) {
|
||||||
|
if (super.checkEvent(event, game)) {
|
||||||
|
Zone fromZone = event.getFromZone();
|
||||||
|
if (fromZone == Zone.GRAVEYARD) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (fromZone == Zone.STACK) {
|
||||||
|
Permanent permanent = event.getTarget();
|
||||||
|
Spell spell = game.getSpellOrLKIStack(permanent.getId());
|
||||||
|
if (spell != null && spell.getFromZone() == Zone.GRAVEYARD) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -19,6 +19,9 @@ public final class FinalFantasyCommander extends ExpansionSet {
|
||||||
super("Final Fantasy Commander", "FIC", ExpansionSet.buildDate(2025, 6, 13), SetType.SUPPLEMENTAL);
|
super("Final Fantasy Commander", "FIC", ExpansionSet.buildDate(2025, 6, 13), SetType.SUPPLEMENTAL);
|
||||||
this.hasBasicLands = false;
|
this.hasBasicLands = false;
|
||||||
|
|
||||||
|
cards.add(new SetCardInfo("Celes, Rune Knight", 1, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS));
|
||||||
|
cards.add(new SetCardInfo("Celes, Rune Knight", 201, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS));
|
||||||
|
cards.add(new SetCardInfo("Celes, Rune Knight", 220, Rarity.MYTHIC, mage.cards.c.CelesRuneKnight.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 2, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 2, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 168, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 168, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 202, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Cloud, Ex-SOLDIER", 202, Rarity.MYTHIC, mage.cards.c.CloudExSOLDIER.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public class EntersBattlefieldOneOrMoreTriggeredAbility extends TriggeredAbility
|
||||||
setTriggerPhrase(generateTriggerPhrase());
|
setTriggerPhrase(generateTriggerPhrase());
|
||||||
}
|
}
|
||||||
|
|
||||||
private EntersBattlefieldOneOrMoreTriggeredAbility(final EntersBattlefieldOneOrMoreTriggeredAbility ability) {
|
protected EntersBattlefieldOneOrMoreTriggeredAbility(final EntersBattlefieldOneOrMoreTriggeredAbility ability) {
|
||||||
super(ability);
|
super(ability);
|
||||||
this.filter = ability.filter;
|
this.filter = ability.filter;
|
||||||
this.targetController = ability.targetController;
|
this.targetController = ability.targetController;
|
||||||
|
|
|
||||||
|
|
@ -57177,6 +57177,7 @@ Underground River|Aetherdrift Commander|181|R||Land|||{T}: Add {C}.${T}: Add {U}
|
||||||
Unholy Grotto|Aetherdrift Commander|182|R||Land|||{T}: Add {C}.${B}, {T}: Put target Zombie card from your graveyard on top of your library.|
|
Unholy Grotto|Aetherdrift Commander|182|R||Land|||{T}: Add {C}.${B}, {T}: Put target Zombie card from your graveyard on top of your library.|
|
||||||
Vineglimmer Snarl|Aetherdrift Commander|183|R||Land|||As Vineglimmer Snarl enters, you may reveal a Forest or Island card from your hand. If you don't, Vineglimmer Snarl enters tapped.${T}: Add {G} or {U}.|
|
Vineglimmer Snarl|Aetherdrift Commander|183|R||Land|||As Vineglimmer Snarl enters, you may reveal a Forest or Island card from your hand. If you don't, Vineglimmer Snarl enters tapped.${T}: Add {G} or {U}.|
|
||||||
Yavimaya Coast|Aetherdrift Commander|184|R||Land|||{T}: Add {C}.${T}: Add {G} or {U}. Yavimaya Coast deals 1 damage to you.|
|
Yavimaya Coast|Aetherdrift Commander|184|R||Land|||{T}: Add {C}.${T}: Add {G} or {U}. Yavimaya Coast deals 1 damage to you.|
|
||||||
|
Celes, Rune Knight|Final Fantasy Commander|1|M|{1}{R}{W}{B}|Legendary Creature - Human Wizard Knight|4|4|When Celes enters, discard any number of cards, then draw that many cards plus one.$Whenever one or more other creatures you control enter, if one or more of them entered from a graveyard or was cast from a graveyard, put a +1/+1 counter on each creature you control.|
|
||||||
Cloud, Ex-SOLDIER|Final Fantasy Commander|2|M|{2}{R}{G}{W}|Legendary Creature - Human Soldier Mercenary|4|4|Haste$When Cloud enters, attach up to one target Equipment you control to it.$Whenever Cloud attacks, draw a card for each equipped attacking creature you control. Then if Cloud has power 7 or greater, create two Treasure tokens.|
|
Cloud, Ex-SOLDIER|Final Fantasy Commander|2|M|{2}{R}{G}{W}|Legendary Creature - Human Soldier Mercenary|4|4|Haste$When Cloud enters, attach up to one target Equipment you control to it.$Whenever Cloud attacks, draw a card for each equipped attacking creature you control. Then if Cloud has power 7 or greater, create two Treasure tokens.|
|
||||||
Terra, Herald of Hope|Final Fantasy Commander|4|M|{R}{W}{B}|Legendary Creature - Human Wizard Warrior|3|3|Trance -- At the beginning of combat on your turn, mill two cards. Terra gains flying until end of turn.$Whenever Terra deals combat damage to a player, you may pay {2}. When you do, return target creature card with power 3 or less from your graveyard to the battlefield tapped.|
|
Terra, Herald of Hope|Final Fantasy Commander|4|M|{R}{W}{B}|Legendary Creature - Human Wizard Warrior|3|3|Trance -- At the beginning of combat on your turn, mill two cards. Terra gains flying until end of turn.$Whenever Terra deals combat damage to a player, you may pay {2}. When you do, return target creature card with power 3 or less from your graveyard to the battlefield tapped.|
|
||||||
Tidus, Yuna's Guardian|Final Fantasy Commander|5|M|{G}{W}{U}|Legendary Creature - Human Warrior|3|3|At the beginning of combat on your turn, you may move a counter from target creature you control onto a second target creature you control.$Cheer - Whenever one or more creatures you control with counters on them deal combat damage to a player, you may draw a card and proliferate. Do this only once each turn.|
|
Tidus, Yuna's Guardian|Final Fantasy Commander|5|M|{G}{W}{U}|Legendary Creature - Human Warrior|3|3|At the beginning of combat on your turn, you may move a counter from target creature you control onto a second target creature you control.$Cheer - Whenever one or more creatures you control with counters on them deal combat damage to a player, you may draw a card and proliferate. Do this only once each turn.|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue