diff --git a/Mage.Sets/src/mage/cards/b/BlitzballStadium.java b/Mage.Sets/src/mage/cards/b/BlitzballStadium.java new file mode 100644 index 00000000000..a10598cf598 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BlitzballStadium.java @@ -0,0 +1,93 @@ +package mage.cards.b; + +import java.util.UUID; + +import mage.abilities.Ability; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.abilities.hint.ValueHint; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetCreaturePermanent; +import mage.target.targetadjustment.XTargetsCountAdjuster; + +/** + * @author balazskristof + */ +public final class BlitzballStadium extends CardImpl { + + public static final ValueHint hint = new ValueHint("Kind of counters on it", BlitzballStadiumValue.instance); + + public BlitzballStadium(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}{U}"); + + // When this artifact enters, support X. + Ability supportAbility = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()) + .setText("support X. (Put a +1/+1 counter on each of up to X target creatures.)") + ); + supportAbility.addTarget(new TargetCreaturePermanent(0, 1)); + supportAbility.setTargetAdjuster(new XTargetsCountAdjuster()); + this.addAbility(supportAbility); + + // Go for the Goal! -- {3}, {T}: Until end of turn, target creature gains "Whenever this creature deals combat damage to a player, draw a card for each kind of counter on it" and it can't be blocked this turn. + Ability ability = new SimpleActivatedAbility( + new GainAbilityTargetEffect( + new DealsCombatDamageToAPlayerTriggeredAbility( + new DrawCardSourceControllerEffect(BlitzballStadiumValue.instance) + .setText("draw a card for each kind of counter on it"), + false + ).addHint(hint) + ).setText("Until end of turn, target creature gains \"Whenever this creature deals combat damage to a player, draw a card for each kind of counter on it\""), + new GenericManaCost(3) + ); + ability.addCost(new TapSourceCost()); + ability.addEffect(new CantBeBlockedTargetEffect().setText("and it can't be blocked this turn")); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability.withFlavorWord("Go for the Goal!")); + } + + private BlitzballStadium(final BlitzballStadium card) { + super(card); + } + + @Override + public BlitzballStadium copy() { + return new BlitzballStadium(this); + } +} + +enum BlitzballStadiumValue implements DynamicValue { + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Permanent permanent = sourceAbility.getSourcePermanentOrLKI(game); + if (permanent == null) { + return 0; + } + return permanent.getCounters(game).size(); + } + + @Override + public BlitzballStadiumValue copy() { + return this; + } + + @Override + public String getMessage() { + return ""; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java index b61cd291ccb..744bf1d9db9 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java +++ b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java @@ -59,6 +59,8 @@ public final class FinalFantasyCommander extends ExpansionSet { cards.add(new SetCardInfo("Bedevil", 319, Rarity.RARE, mage.cards.b.Bedevil.class)); cards.add(new SetCardInfo("Behemoth Sledge", 320, Rarity.UNCOMMON, mage.cards.b.BehemothSledge.class)); cards.add(new SetCardInfo("Big Score", 290, Rarity.COMMON, mage.cards.b.BigScore.class)); + cards.add(new SetCardInfo("Blitzball Stadium", 34, Rarity.RARE, mage.cards.b.BlitzballStadium.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blitzball Stadium", 111, Rarity.RARE, mage.cards.b.BlitzballStadium.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blue Mage's Cane", 112, Rarity.RARE, mage.cards.b.BlueMagesCane.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blue Mage's Cane", 35, Rarity.RARE, mage.cards.b.BlueMagesCane.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bonders' Enclave", 376, Rarity.RARE, mage.cards.b.BondersEnclave.class));