diff --git a/Mage.Sets/src/mage/cards/f/FireMagic.java b/Mage.Sets/src/mage/cards/f/FireMagic.java new file mode 100644 index 00000000000..91bb0da53b4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FireMagic.java @@ -0,0 +1,47 @@ +package mage.cards.f; + +import mage.abilities.Mode; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.keyword.TieredAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.StaticFilters; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class FireMagic extends CardImpl { + + public FireMagic(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}"); + + // Tiered + this.addAbility(new TieredAbility(this)); + + // * Fire -- {0} -- Fire Magic deals 1 damage to each creature. + this.getSpellAbility().addEffect(new DamageAllEffect(1, StaticFilters.FILTER_PERMANENT_CREATURE)); + this.getSpellAbility().withFirstModeCost(new GenericManaCost(1)); + this.getSpellAbility().withFirstModeFlavorWord("Fire"); + + // * Fira -- {2} -- Fire Magic deals 2 damage to each creature. + this.getSpellAbility().addMode(new Mode(new DamageAllEffect(2, StaticFilters.FILTER_PERMANENT_CREATURE)) + .withCost(new GenericManaCost(2)).withFlavorWord("Fira")); + + // * Firaga -- {5} -- Fire Magic deals 3 damage to each creature. + this.getSpellAbility().addMode(new Mode(new DamageAllEffect(3, StaticFilters.FILTER_PERMANENT_CREATURE)) + .withCost(new GenericManaCost(5)).withFlavorWord("Firaga")); + } + + private FireMagic(final FireMagic card) { + super(card); + } + + @Override + public FireMagic copy() { + return new FireMagic(this); + } +} diff --git a/Mage.Sets/src/mage/sets/FinalFantasy.java b/Mage.Sets/src/mage/sets/FinalFantasy.java index 4d79767901d..b6e669577c6 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasy.java +++ b/Mage.Sets/src/mage/sets/FinalFantasy.java @@ -61,6 +61,7 @@ public final class FinalFantasy extends ExpansionSet { cards.add(new SetCardInfo("Fang, Fearless l'Cie", 446, Rarity.UNCOMMON, mage.cards.f.FangFearlessLCie.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fang, Fearless l'Cie", 526, Rarity.UNCOMMON, mage.cards.f.FangFearlessLCie.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fang, Fearless l'Cie", 99, Rarity.UNCOMMON, mage.cards.f.FangFearlessLCie.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fire Magic", 136, Rarity.UNCOMMON, mage.cards.f.FireMagic.class)); cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Forest", 307, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Forest", 308, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/Modes.java b/Mage/src/main/java/mage/abilities/Modes.java index 35523807260..c90bf1c8bbc 100644 --- a/Mage/src/main/java/mage/abilities/Modes.java +++ b/Mage/src/main/java/mage/abilities/Modes.java @@ -617,11 +617,9 @@ public class Modes extends LinkedHashMap implements Copyable sb.append("
"); for (Mode mode : this.values()) { - if (mode.getCost() != null) { + if (mode.getCost() != null && mode.getFlavorWord() == null) { // for Spree sb.append("+ "); - sb.append(mode.getCost().getText()); - sb.append(" — "); } else if (mode.getPawPrintValue() > 0) { for (int i = 0; i < mode.getPawPrintValue(); ++i) { sb.append("{P}"); diff --git a/Mage/src/main/java/mage/abilities/effects/Effects.java b/Mage/src/main/java/mage/abilities/effects/Effects.java index 2cdc4d54bc5..fbfdaf7ba5a 100644 --- a/Mage/src/main/java/mage/abilities/effects/Effects.java +++ b/Mage/src/main/java/mage/abilities/effects/Effects.java @@ -115,10 +115,18 @@ public class Effects extends ArrayList { sbText.append('.'); } + + if (mode.getCost() != null || mode.getFlavorWord() != null) { + sbText.replace(0, 1, sbText.substring(0, 1).toUpperCase()); + } + // cost + if (mode.getCost() != null) { + sbText.insert(0, " — "); + sbText.insert(0, mode.getCost().getText()); + } // flavor word if (mode.getFlavorWord() != null) { - return CardUtil.italicizeWithEmDash(mode.getFlavorWord()) - + CardUtil.getTextWithFirstCharUpperCase(sbText.toString()); + sbText.insert(0, CardUtil.italicizeWithEmDash(mode.getFlavorWord())); } return sbText.toString(); diff --git a/Mage/src/main/java/mage/abilities/keyword/TieredAbility.java b/Mage/src/main/java/mage/abilities/keyword/TieredAbility.java new file mode 100644 index 00000000000..465102f2c2f --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/TieredAbility.java @@ -0,0 +1,26 @@ +package mage.abilities.keyword; + +import mage.abilities.StaticAbility; +import mage.cards.Card; +import mage.constants.Zone; + +/** + * @author TheElk801 + */ +public class TieredAbility extends StaticAbility { + + public TieredAbility(Card card) { + super(Zone.ALL, null); + this.setRuleVisible(false); + card.getSpellAbility().getModes().setChooseText("Tiered (Choose one additional cost.)"); + } + + private TieredAbility(final TieredAbility ability) { + super(ability); + } + + @Override + public TieredAbility copy() { + return new TieredAbility(this); + } +} diff --git a/Utils/keywords.txt b/Utils/keywords.txt index e86693ce0f3..ea6b857b8ce 100644 --- a/Utils/keywords.txt +++ b/Utils/keywords.txt @@ -134,6 +134,7 @@ Suspend|number, cost, card| Swampcycling|cost| Swampwalk|new| Umbra armor|new| +Tiered|card| Toxic|number| Training|new| Trample|instance|