Implemented Kiora Bests the Sea God

This commit is contained in:
Evan Kranzler 2020-01-07 18:38:33 -05:00
parent a205f2bf10
commit a9739f12f1
3 changed files with 137 additions and 0 deletions

View 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;
}
}

View file

@ -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));

View file

@ -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);
}
}