mirror of
https://github.com/magefree/mage.git
synced 2025-12-28 14:32:06 -08:00
Implemented Kiora Bests the Sea God
This commit is contained in:
parent
a205f2bf10
commit
a9739f12f1
3 changed files with 137 additions and 0 deletions
103
Mage.Sets/src/mage/cards/k/KioraBestsTheSeaGod.java
Normal file
103
Mage.Sets/src/mage/cards/k/KioraBestsTheSeaGod.java
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
package mage.cards.k;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.effects.Effects;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
|
||||
import mage.abilities.effects.common.TapAllTargetPlayerControlsEffect;
|
||||
import mage.abilities.effects.common.UntapTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.KrakenHexproofToken;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.target.targetpointer.FixedTargets;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class KioraBestsTheSeaGod extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("permanent an opponent controls");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
}
|
||||
|
||||
public KioraBestsTheSeaGod(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}{U}");
|
||||
|
||||
this.subtype.add(SubType.SAGA);
|
||||
|
||||
// <i>(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)</i>
|
||||
SagaAbility sagaAbility = new SagaAbility(this, SagaChapter.CHAPTER_III);
|
||||
|
||||
// I — Create an 8/8 blue Kraken creature token with hexproof.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_I, new CreateTokenEffect(new KrakenHexproofToken())
|
||||
);
|
||||
|
||||
// II — Tap all nonland permanents target opponent controls. They don't untap during their controller's next untap step.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_II,
|
||||
new Effects(new TapAllTargetPlayerControlsEffect(
|
||||
StaticFilters.FILTER_PERMANENT_CREATURES
|
||||
), new KioraBestsTheSeaGodEffect()),
|
||||
new TargetOpponent()
|
||||
);
|
||||
|
||||
// III — Gain control of target permanent an opponent controls. Untap it.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_III, SagaChapter.CHAPTER_III,
|
||||
new Effects(
|
||||
new GainControlTargetEffect(Duration.Custom),
|
||||
new UntapTargetEffect().setText("Untap it.")
|
||||
), new TargetPermanent(filter)
|
||||
);
|
||||
}
|
||||
|
||||
private KioraBestsTheSeaGod(final KioraBestsTheSeaGod card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KioraBestsTheSeaGod copy() {
|
||||
return new KioraBestsTheSeaGod(this);
|
||||
}
|
||||
}
|
||||
|
||||
class KioraBestsTheSeaGodEffect extends OneShotEffect {
|
||||
|
||||
KioraBestsTheSeaGodEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "They don't untap during their controller's next untap step";
|
||||
}
|
||||
|
||||
private KioraBestsTheSeaGodEffect(final KioraBestsTheSeaGodEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KioraBestsTheSeaGodEffect copy() {
|
||||
return new KioraBestsTheSeaGodEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
game.addEffect(new DontUntapInControllersNextUntapStepTargetEffect()
|
||||
.setTargetPointer(new FixedTargets(game.getBattlefield().getAllActivePermanents(
|
||||
StaticFilters.FILTER_PERMANENT_CREATURE, source.getFirstTarget(), game
|
||||
), game)), source
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -79,6 +79,7 @@ public final class TherosBeyondDeath extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Inspire Awe", 175, Rarity.COMMON, mage.cards.i.InspireAwe.class));
|
||||
cards.add(new SetCardInfo("Ironscale Hydra", 296, Rarity.RARE, mage.cards.i.IronscaleHydra.class));
|
||||
cards.add(new SetCardInfo("Island", 251, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
||||
cards.add(new SetCardInfo("Kiora Bests the Sea God", 52, Rarity.MYTHIC, mage.cards.k.KioraBestsTheSeaGod.class));
|
||||
cards.add(new SetCardInfo("Klothys's Design", 176, Rarity.UNCOMMON, mage.cards.k.KlothyssDesign.class));
|
||||
cards.add(new SetCardInfo("Klothys, God of Destiny", 220, Rarity.MYTHIC, mage.cards.k.KlothysGodOfDestiny.class));
|
||||
cards.add(new SetCardInfo("Kunoros, Hound of Athreos", 222, Rarity.RARE, mage.cards.k.KunorosHoundOfAthreos.class));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.keyword.HexproofAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
|
||||
public final class KrakenHexproofToken extends TokenImpl {
|
||||
|
||||
public KrakenHexproofToken() {
|
||||
super("Kraken", "8/8 blue Kraken creature token with hexproof");
|
||||
this.cardType.add(CardType.CREATURE);
|
||||
this.subtype.add(SubType.KRAKEN);
|
||||
this.color = ObjectColor.BLUE;
|
||||
this.power = new MageInt(8);
|
||||
this.toughness = new MageInt(8);
|
||||
this.addAbility(HexproofAbility.getInstance());
|
||||
}
|
||||
|
||||
private KrakenHexproofToken(final KrakenHexproofToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public KrakenHexproofToken copy() {
|
||||
return new KrakenHexproofToken(this);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue