diff --git a/Mage.Sets/src/mage/cards/g/GiftOfStrength.java b/Mage.Sets/src/mage/cards/g/GiftOfStrength.java new file mode 100644 index 00000000000..b7f13b9a282 --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GiftOfStrength.java @@ -0,0 +1,37 @@ +package mage.cards.g; + +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +public class GiftOfStrength extends CardImpl { + + public GiftOfStrength(UUID ownerId, CardSetInfo cardSetInfo) { + super(ownerId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{1}{G}"); + + // Target creature gets +3/+3 and gains reach until end of turn. + Effect effect = new BoostTargetEffect(3, 3, Duration.EndOfTurn); + effect.setText("Target creature gets +3/+3"); + this.getSpellAbility().addEffect(effect); + effect = new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn); + effect.setText("and gains reach until end of turn"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public GiftOfStrength(final GiftOfStrength giftOfStrength) { + super(giftOfStrength); + } + + public GiftOfStrength copy() { + return new GiftOfStrength(this); + } +} diff --git a/Mage.Sets/src/mage/cards/g/GraniticTitan.java b/Mage.Sets/src/mage/cards/g/GraniticTitan.java new file mode 100644 index 00000000000..56472d98efb --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GraniticTitan.java @@ -0,0 +1,36 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.keyword.CyclingAbility; +import mage.abilities.keyword.MenaceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +import java.util.UUID; + +public class GraniticTitan extends CardImpl { + + public GraniticTitan(UUID ownerId, CardSetInfo cardSetInfo){ + super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE},"{4}{R}{R}"); + subtype.add("Elemental"); + power = new MageInt(5); + toughness = new MageInt(4); + + // Menace + addAbility(new MenaceAbility()); + + // Cycling {2} + addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}"))); + + } + + public GraniticTitan(final GraniticTitan graniticTitan){ + super(graniticTitan); + } + + public GraniticTitan copy(){ + return new GraniticTitan(this); + } +} diff --git a/Mage.Sets/src/mage/cards/m/Magmaroth.java b/Mage.Sets/src/mage/cards/m/Magmaroth.java new file mode 100644 index 00000000000..cdabe61fbde --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/Magmaroth.java @@ -0,0 +1,48 @@ +package mage.cards.m; + +import mage.MageInt; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.TargetController; +import mage.counters.CounterType; +import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; + +import java.util.UUID; + +public class Magmaroth extends CardImpl{ + + private static final FilterSpell filterNonCreature = new FilterSpell("a noncreature spell"); + + static { + filterNonCreature.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); + } + + public Magmaroth(UUID ownerId, CardSetInfo cardSetInfo){ + super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); + subtype.add("Elemental"); + power = new MageInt(5); + toughness = new MageInt(5); + + // At the beginning of your upkeep, put a -1/-1 counter on Magmaroth + addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance()), TargetController.YOU, false)); + + // Whenever you cast a noncreature spell, remove a -1/-1 counter from Magmaroth + addAbility(new SpellCastControllerTriggeredAbility(new RemoveCounterSourceEffect(CounterType.M1M1.createInstance()), filterNonCreature, false)); + + } + + public Magmaroth(final Magmaroth magmaroth){ + super(magmaroth); + } + + public Magmaroth copy(){ + return new Magmaroth(this); + } +} diff --git a/Mage.Sets/src/mage/cards/m/ManticoreElemental.java b/Mage.Sets/src/mage/cards/m/ManticoreElemental.java new file mode 100644 index 00000000000..905f2d0f5f5 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/ManticoreElemental.java @@ -0,0 +1,35 @@ +package mage.cards.m; + +import mage.MageInt; +import mage.abilities.common.AttacksEachCombatStaticAbility; +import mage.abilities.keyword.AfflictAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +import java.util.UUID; + +public class ManticoreElemental extends CardImpl { + + public ManticoreElemental(UUID ownerId, CardSetInfo cardSetInfo) { + super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); + subtype.add("Zombie"); + subtype.add("Manticore"); + power = new MageInt(5); + toughness = new MageInt(4); + + // Afflict 3 + addAbility(new AfflictAbility(3)); + + // Manticore Elemental attacks each combat if able + addAbility(new AttacksEachCombatStaticAbility()); + } + + public ManticoreElemental(final ManticoreElemental manticoreElemental) { + super(manticoreElemental); + } + + public ManticoreElemental copy() { + return new ManticoreElemental(this); + } +} diff --git a/Mage.Sets/src/mage/cards/v/ViashivanDragon.java b/Mage.Sets/src/mage/cards/v/ViashivanDragon.java index 9a94b31aa6c..5052b426f87 100644 --- a/Mage.Sets/src/mage/cards/v/ViashivanDragon.java +++ b/Mage.Sets/src/mage/cards/v/ViashivanDragon.java @@ -18,7 +18,7 @@ public class ViashivanDragon extends CardImpl { public ViashivanDragon(UUID cardId, CardSetInfo cardSetInfo) { super(cardId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{G}{G}"); - subtype.add("DRAGON"); + subtype.add("Dragon"); color.setGreen(true); color.setRed(true); power = new MageInt(4); diff --git a/Mage.Sets/src/mage/sets/HourOfDevastation.java b/Mage.Sets/src/mage/sets/HourOfDevastation.java index 75f819b72f3..a250703a023 100644 --- a/Mage.Sets/src/mage/sets/HourOfDevastation.java +++ b/Mage.Sets/src/mage/sets/HourOfDevastation.java @@ -27,8 +27,6 @@ */ package mage.sets; -import java.util.ArrayList; -import java.util.List; import mage.cards.CardGraphicInfo; import mage.cards.ExpansionSet; import mage.cards.FrameStyle; @@ -38,6 +36,9 @@ import mage.cards.repository.CardRepository; import mage.constants.Rarity; import mage.constants.SetType; +import java.util.ArrayList; +import java.util.List; + /** * @author fireshoes */ @@ -120,8 +121,10 @@ public class HourOfDevastation extends ExpansionSet { cards.add(new SetCardInfo("Forest", 199, Rarity.LAND, mage.cards.basiclands.Forest.class)); cards.add(new SetCardInfo("Fraying Sanity", 35, Rarity.UNCOMMON, mage.cards.f.FrayingSanity.class)); cards.add(new SetCardInfo("Gideon's Defeat", 13, Rarity.UNCOMMON, mage.cards.g.GideonsDefeat.class)); + cards.add(new SetCardInfo("Gift of Strength", 117, Rarity.COMMON, mage.cards.g.GiftOfStrength.class)); cards.add(new SetCardInfo("Gilded Cerodon", 94, Rarity.COMMON, mage.cards.g.GildedCerodon.class)); cards.add(new SetCardInfo("God-Pharaoh's Faithful", 14, Rarity.COMMON, mage.cards.g.GodPharaohsFaithful.class)); + cards.add(new SetCardInfo("Granitic Titan", 95, Rarity.COMMON, mage.cards.g.GraniticTitan.class)); cards.add(new SetCardInfo("Grind // Dust", 155, Rarity.RARE, mage.cards.g.GrindDust.class)); cards.add(new SetCardInfo("Harrier Naga", 118, Rarity.COMMON, mage.cards.h.HarrierNaga.class)); cards.add(new SetCardInfo("Hour of Eternity", 36, Rarity.RARE, mage.cards.h.HourOfEternity.class)); @@ -138,7 +141,9 @@ public class HourOfDevastation extends ExpansionSet { cards.add(new SetCardInfo("Leave // Chance", 153, Rarity.RARE, mage.cards.l.LeaveChance.class)); cards.add(new SetCardInfo("Liliana's Defeat", 68, Rarity.UNCOMMON, mage.cards.l.LilianasDefeat.class)); cards.add(new SetCardInfo("Lurching Rotbeast", 69, Rarity.COMMON, mage.cards.l.LurchingRotbeast.class)); + cards.add(new SetCardInfo("Magmaroth", 102, Rarity.UNCOMMON, mage.cards.m.Magmaroth.class)); cards.add(new SetCardInfo("Manalith", 164, Rarity.COMMON, mage.cards.m.Manalith.class)); + cards.add(new SetCardInfo("Manticore Elemental", 103, Rarity.UNCOMMON, mage.cards.m.ManticoreElemental.class)); cards.add(new SetCardInfo("Marauding Boneslasher", 70, Rarity.COMMON, mage.cards.m.MaraudingBoneslasher.class)); cards.add(new SetCardInfo("Moaning Wall", 72, Rarity.COMMON, mage.cards.m.MoaningWall.class)); cards.add(new SetCardInfo("Mountain", 188, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(FrameStyle.BFZ_FULL_ART_BASIC, true)));