diff --git a/Mage.Sets/src/mage/cards/k/KatildaDawnhartPrime.java b/Mage.Sets/src/mage/cards/k/KatildaDawnhartPrime.java new file mode 100644 index 00000000000..7f2294002c3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/k/KatildaDawnhartPrime.java @@ -0,0 +1,191 @@ +package mage.cards.k; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import mage.MageInt; +import mage.Mana; +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.effects.common.counter.AddCountersAllEffect; +import mage.abilities.effects.mana.ManaEffect; +import mage.abilities.keyword.ProtectionAbility; +import mage.abilities.mana.ActivatedManaAbilityImpl; +import mage.choices.Choice; +import mage.choices.ChoiceImpl; +import mage.constants.*; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +/** + * + * @author weirddan455 + */ +public final class KatildaDawnhartPrime extends CardImpl { + + private static final FilterPermanent filter = new FilterPermanent(SubType.WEREWOLF, "Werewolves"); + private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.HUMAN, "Human creatures you control"); + + public KatildaDawnhartPrime(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WARLOCK); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Protection from Werewolves + this.addAbility(new ProtectionAbility(filter)); + + // Human creatures you control have "{T}: Add one mana of any of this creature's colors." + this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(new KatildaDawnhartPrimeManaAbility(), Duration.WhileOnBattlefield, filter2))); + + // {4}{G}{W}, {T}: Put a +1/+1 counter on each creature you control. + this.addAbility(new SimpleActivatedAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE), new ManaCostsImpl<>("{4}{G}{W}"))); + } + + private KatildaDawnhartPrime(final KatildaDawnhartPrime card) { + super(card); + } + + @Override + public KatildaDawnhartPrime copy() { + return new KatildaDawnhartPrime(this); + } +} + +// Mana code based on CommanderColorIdentityManaAbility +class KatildaDawnhartPrimeManaAbility extends ActivatedManaAbilityImpl { + + public KatildaDawnhartPrimeManaAbility() { + super(Zone.BATTLEFIELD, new KatildaDawnhartPrimeManaEffect(), new TapSourceCost()); + } + + private KatildaDawnhartPrimeManaAbility(final KatildaDawnhartPrimeManaAbility ability) { + super(ability); + } + + @Override + public KatildaDawnhartPrimeManaAbility copy() { + return new KatildaDawnhartPrimeManaAbility(this); + } + + @Override + public boolean definesMana(Game game) { + return true; + } +} + +class KatildaDawnhartPrimeManaEffect extends ManaEffect { + + public KatildaDawnhartPrimeManaEffect() { + super(); + staticText = "Add one mana of any of this creature's colors"; + } + + private KatildaDawnhartPrimeManaEffect(final KatildaDawnhartPrimeManaEffect effect) { + super(effect); + } + + @Override + public KatildaDawnhartPrimeManaEffect copy() { + return new KatildaDawnhartPrimeManaEffect(this); + } + + @Override + public List getNetMana(Game game, Ability source) { + List netMana = new ArrayList<>(); + if (game != null) { + Permanent permanent = source.getSourcePermanentIfItStillExists(game); + if (permanent != null) { + ObjectColor color = permanent.getColor(game); + if (color.isWhite()) { + netMana.add(new Mana(ColoredManaSymbol.W)); + } + if (color.isBlue()) { + netMana.add(new Mana(ColoredManaSymbol.U)); + } + if (color.isBlack()) { + netMana.add(new Mana(ColoredManaSymbol.B)); + } + if (color.isRed()) { + netMana.add(new Mana(ColoredManaSymbol.R)); + } + if (color.isGreen()) { + netMana.add(new Mana(ColoredManaSymbol.G)); + } + } + } + return netMana; + } + + @Override + public Mana produceMana(Game game, Ability source) { + Mana mana = new Mana(); + if (game != null) { + Player controller = game.getPlayer(source.getControllerId()); + Permanent permanent = source.getSourcePermanentIfItStillExists(game); + if (controller != null && permanent != null) { + Choice choice = new ChoiceImpl(); + choice.setMessage("Pick a mana color"); + ObjectColor color = permanent.getColor(game); + if (color.isWhite()) { + choice.getChoices().add("White"); + } + if (color.isBlue()) { + choice.getChoices().add("Blue"); + } + if (color.isBlack()) { + choice.getChoices().add("Black"); + } + if (color.isRed()) { + choice.getChoices().add("Red"); + } + if (color.isGreen()) { + choice.getChoices().add("Green"); + } + if (!choice.getChoices().isEmpty()) { + if (choice.getChoices().size() == 1) { + choice.setChoice(choice.getChoices().iterator().next()); + } else { + controller.choose(outcome, choice, game); + } + + if (choice.getChoice() != null) { + switch (choice.getChoice()) { + case "White": + mana.setWhite(1); + break; + case "Blue": + mana.setBlue(1); + break; + case "Black": + mana.setBlack(1); + break; + case "Red": + mana.setRed(1); + break; + case "Green": + mana.setGreen(1); + break; + } + } + } + } + } + return mana; + } +} diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java index e6ada750ded..e7b79f4e5b9 100644 --- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java +++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java @@ -171,6 +171,7 @@ public final class InnistradMidnightHunt extends ExpansionSet { cards.add(new SetCardInfo("Jack-o'-Lantern", 254, Rarity.COMMON, mage.cards.j.JackOLantern.class)); cards.add(new SetCardInfo("Jadar, Ghoulcaller of Nephalia", 108, Rarity.RARE, mage.cards.j.JadarGhoulcallerOfNephalia.class)); cards.add(new SetCardInfo("Join the Dance", 229, Rarity.UNCOMMON, mage.cards.j.JoinTheDance.class)); + cards.add(new SetCardInfo("Katilda, Dawnhart Prime", 230, Rarity.RARE, mage.cards.k.KatildaDawnhartPrime.class)); cards.add(new SetCardInfo("Kessig Naturalist", 231, Rarity.UNCOMMON, mage.cards.k.KessigNaturalist.class)); cards.add(new SetCardInfo("Lambholt Harrier", 145, Rarity.COMMON, mage.cards.l.LambholtHarrier.class)); cards.add(new SetCardInfo("Larder Zombie", 58, Rarity.COMMON, mage.cards.l.LarderZombie.class));