mirror of
https://github.com/correl/mage.git
synced 2025-01-11 19:13:02 +00:00
[NCC] Implemented Kitt Kanto, Mayhem Diva
This commit is contained in:
parent
4a6fa15b37
commit
2d2763ebf6
3 changed files with 89 additions and 5 deletions
79
Mage.Sets/src/mage/cards/k/KittKantoMayhemDiva.java
Normal file
79
Mage.Sets/src/mage/cards/k/KittKantoMayhemDiva.java
Normal file
|
@ -0,0 +1,79 @@
|
|||
package mage.cards.k;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
|
||||
import mage.abilities.costs.common.TapTargetCost;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DoWhenCostPaid;
|
||||
import mage.abilities.effects.common.combat.GoadTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.permanent.token.CitizenGreenWhiteToken;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class KittKantoMayhemDiva extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterCreaturePermanent("creature controlled by the active player");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.ACTIVE.getControllerPredicate());
|
||||
}
|
||||
|
||||
public KittKantoMayhemDiva(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.CAT);
|
||||
this.subtype.add(SubType.BARD);
|
||||
this.subtype.add(SubType.DRUID);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// When Kitt Kanto enters the battlefield, create a 1/1 green and white Citizen creature token.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new CitizenGreenWhiteToken())));
|
||||
|
||||
// At the beginning of combat on each player's turn, you may tap two untapped creatures you control. When you do, target creature that player controls gets +2/+2 and gains trample until end of turn. Goad that creature.
|
||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
|
||||
new BoostTargetEffect(2, 2)
|
||||
.setText("target creature that player controls gets +2/+2"),
|
||||
false
|
||||
);
|
||||
ability.addEffect(new GainAbilityTargetEffect(
|
||||
TrampleAbility.getInstance(), Duration.EndOfTurn,
|
||||
"and gains trample until end of turn"
|
||||
));
|
||||
ability.addEffect(new GoadTargetEffect().setText("Goad that creature"));
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
this.addAbility(new BeginningOfCombatTriggeredAbility(new DoWhenCostPaid(
|
||||
ability,
|
||||
new TapTargetCost(new TargetControlledPermanent(
|
||||
2, StaticFilters.FILTER_CONTROLLED_UNTAPPED_CREATURES
|
||||
)), "Tap two untapped creatures you control?"
|
||||
), TargetController.EACH_PLAYER, false));
|
||||
}
|
||||
|
||||
private KittKantoMayhemDiva(final KittKantoMayhemDiva card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KittKantoMayhemDiva copy() {
|
||||
return new KittKantoMayhemDiva(this);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package mage.sets;
|
||||
|
||||
import mage.cards.ExpansionSet;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.SetType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
@ -22,6 +23,8 @@ public final class NewCapennaCommander extends ExpansionSet {
|
|||
super("New Capenna Commander", "NCC", ExpansionSet.buildDate(2022, 4, 29), SetType.SUPPLEMENTAL);
|
||||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new SetCardInfo("Kitt Kanto, Mayhem Diva", 4, Rarity.MYTHIC, mage.cards.k.KittKantoMayhemDiva.class));
|
||||
|
||||
cards.removeIf(setCardInfo -> unfinished.contains(setCardInfo.getName())); // remove when shield counters are implemented
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,8 @@ import mage.target.targetpointer.FixedTarget;
|
|||
|
||||
public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
private TargetController targetController;
|
||||
private boolean setTargetPointer;
|
||||
private final TargetController targetController;
|
||||
private final boolean setTargetPointer;
|
||||
|
||||
public BeginningOfCombatTriggeredAbility(Effect effect, TargetController targetController, boolean isOptional) {
|
||||
this(Zone.BATTLEFIELD, effect, targetController, isOptional, false);
|
||||
|
@ -62,6 +62,7 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
|||
return true;
|
||||
}
|
||||
break;
|
||||
case EACH_PLAYER:
|
||||
case ANY:
|
||||
if (setTargetPointer) {
|
||||
this.getEffects().forEach(effect -> {
|
||||
|
@ -80,6 +81,8 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
|||
return "At the beginning of combat on your turn, " + generateZoneString();
|
||||
case OPPONENT:
|
||||
return "At the beginning of each opponent's combat step, " + generateZoneString();
|
||||
case EACH_PLAYER:
|
||||
return "At the beginning of combat on each player's turn, " + generateZoneString();
|
||||
case ANY:
|
||||
return "At the beginning of each combat, " + generateZoneString();
|
||||
}
|
||||
|
@ -87,9 +90,8 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
|||
}
|
||||
|
||||
private String generateZoneString() {
|
||||
switch (getZone()) {
|
||||
case GRAVEYARD:
|
||||
return "if {this} is in your graveyard, ";
|
||||
if (getZone() == Zone.GRAVEYARD) {
|
||||
return "if {this} is in your graveyard, ";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue