From 0624a508a9eec760403e0abc34bd4b8afe8ed14a Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 13 May 2025 11:04:27 -0400 Subject: [PATCH] [FIC] Implement Summon: Kujata --- Mage.Sets/src/mage/cards/s/SummonKujata.java | 110 ++++++++++++++++++ .../src/mage/sets/FinalFantasyCommander.java | 1 + 2 files changed, 111 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/SummonKujata.java diff --git a/Mage.Sets/src/mage/cards/s/SummonKujata.java b/Mage.Sets/src/mage/cards/s/SummonKujata.java new file mode 100644 index 00000000000..0a98f1daed5 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SummonKujata.java @@ -0,0 +1,110 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SagaAbility; +import mage.abilities.common.delayed.ReflexiveTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamagePlayersEffect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.combat.CantBlockTargetEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.game.Game; +import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SummonKujata extends CardImpl { + + public SummonKujata(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "5R"); + + this.subtype.add(SubType.SAGA); + this.subtype.add(SubType.OX); + this.power = new MageInt(7); + this.toughness = new MageInt(5); + + // (As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) + SagaAbility sagaAbility = new SagaAbility(this); + + // I - Lightning -- This creature deals 3 damage to each of up to two target creatures. + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, ability -> { + ability.addEffect(new DamageTargetEffect(3)); + ability.addTarget(new TargetCreaturePermanent(0, 2)); + ability.withFlavorWord("Lightning"); + }); + + // II - Ice -- Up to three target creatures can't block this turn. + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, ability -> { + ability.addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)); + ability.addTarget(new TargetCreaturePermanent(0, 3)); + ability.withFlavorWord("Ice"); + }); + + // III - Fire -- Discard a card, then draw two cards. When you discard a card this way, this creature deals damage equal to that card's mana value to each opponent. + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, ability -> { + ability.addEffect(new SummonKujataEffect()); + ability.withFlavorWord("Fire"); + }); + this.addAbility(sagaAbility); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + } + + private SummonKujata(final SummonKujata card) { + super(card); + } + + @Override + public SummonKujata copy() { + return new SummonKujata(this); + } +} + +class SummonKujataEffect extends OneShotEffect { + + SummonKujataEffect() { + super(Outcome.Benefit); + staticText = "discard a card, then draw two cards. When you discard a card this way, " + + "this creature deals damage equal to that card's mana value to each opponent"; + } + + private SummonKujataEffect(final SummonKujataEffect effect) { + super(effect); + } + + @Override + public SummonKujataEffect copy() { + return new SummonKujataEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + Card card = player.discard(1, false, false, source, game).getRandom(game); + player.drawCards(2, source, game); + if (card != null) { + game.fireReflexiveTriggeredAbility(new ReflexiveTriggeredAbility( + new DamagePlayersEffect(card.getManaValue(), TargetController.OPPONENT), false + ), source); + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java index 21c8c76ded1..fe88dfd629f 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java +++ b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java @@ -231,6 +231,7 @@ public final class FinalFantasyCommander extends ExpansionSet { cards.add(new SetCardInfo("Sulfurous Springs", 427, Rarity.RARE, mage.cards.s.SulfurousSprings.class)); cards.add(new SetCardInfo("Summon: Good King Mog XII", 26, Rarity.RARE, mage.cards.s.SummonGoodKingMogXII.class)); cards.add(new SetCardInfo("Summon: Ixion", 27, Rarity.RARE, mage.cards.s.SummonIxion.class)); + cards.add(new SetCardInfo("Summon: Kujata", 61, Rarity.RARE, mage.cards.s.SummonKujata.class)); cards.add(new SetCardInfo("Summoning Materia", 72, Rarity.RARE, mage.cards.s.SummoningMateria.class)); cards.add(new SetCardInfo("Sun Titan", 254, Rarity.MYTHIC, mage.cards.s.SunTitan.class)); cards.add(new SetCardInfo("Sungrass Prairie", 428, Rarity.RARE, mage.cards.s.SungrassPrairie.class));