diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverBrashBlur.java b/Mage.Sets/src/mage/cards/q/QuicksilverBrashBlur.java new file mode 100644 index 00000000000..3fda66891f4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/q/QuicksilverBrashBlur.java @@ -0,0 +1,58 @@ +package mage.cards.q; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.LeylineAbility; +import mage.abilities.keyword.PowerUpAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.counters.CounterType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class QuicksilverBrashBlur extends CardImpl { + + public QuicksilverBrashBlur(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.MUTANT); + this.subtype.add(SubType.HERO); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // If Quicksilver, Brash Blur is in your opening hand, you may begin the game with him on the battlefield. + this.addAbility(LeylineAbility.getInstance()); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + // Power-up -- {4}{R}: Put a +1/+1 counter and a double strike counter on Quicksilver. + Ability ability = new PowerUpAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()) + .setText("put a +1/+1 counter"), + new ManaCostsImpl<>("{4}{R}") + ); + ability.addEffect(new AddCountersSourceEffect(CounterType.DOUBLE_STRIKE.createInstance()) + .setText("and a double strike counter on {this}")); + this.addAbility(ability); + } + + private QuicksilverBrashBlur(final QuicksilverBrashBlur card) { + super(card); + } + + @Override + public QuicksilverBrashBlur copy() { + return new QuicksilverBrashBlur(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java b/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java index ff04c56bf3d..5351ea17832 100644 --- a/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java +++ b/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java @@ -1,6 +1,7 @@ package mage.sets; import mage.cards.ExpansionSet; +import mage.constants.Rarity; import mage.constants.SetType; /** @@ -18,5 +19,7 @@ public final class MarvelSuperHeroes extends ExpansionSet { super("Marvel Super Heroes", "MSH", ExpansionSet.buildDate(2026, 6, 26), SetType.EXPANSION); this.blockName = "Marvel Super Heroes"; // for sorting in GUI this.hasBasicLands = false; // temporary + + cards.add(new SetCardInfo("Quicksilver, Brash Blur", 148, Rarity.RARE, mage.cards.q.QuicksilverBrashBlur.class)); } } diff --git a/Mage/src/main/java/mage/abilities/keyword/PowerUpAbility.java b/Mage/src/main/java/mage/abilities/keyword/PowerUpAbility.java new file mode 100644 index 00000000000..7f93014345a --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/PowerUpAbility.java @@ -0,0 +1,53 @@ +package mage.abilities.keyword; + +import mage.abilities.Ability; +import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.costs.Cost; +import mage.abilities.costs.CostAdjuster; +import mage.abilities.effects.Effect; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.util.CardUtil; + +/** + * @author TheElk801 + */ +public class PowerUpAbility extends ActivatedAbilityImpl { + + private enum PowerUpAbilityAdjuster implements CostAdjuster { + instance; + + @Override + public void reduceCost(Ability ability, Game game) { + Permanent permanent = ability.getSourcePermanentIfItStillExists(game); + if (permanent != null && permanent.getTurnsOnBattlefield() == 0) { + CardUtil.adjustCost(ability, permanent.getManaCost(), false); + } + } + } + + public PowerUpAbility(Effect effect, Cost cost) { + this(Zone.BATTLEFIELD, effect, cost); + this.maxActivationsPerGame = 1; + this.setCostAdjuster(PowerUpAbilityAdjuster.instance); + } + + public PowerUpAbility(Zone zone, Effect effect, Cost cost) { + super(zone, effect, cost); + } + + private PowerUpAbility(final PowerUpAbility ability) { + super(ability); + } + + @Override + public PowerUpAbility copy() { + return new PowerUpAbility(this); + } + + @Override + public String getRule() { + return "Power-up — " + super.getRule(); + } +}