diff --git a/Mage.Sets/src/mage/cards/c/CaldaiaStrongarm.java b/Mage.Sets/src/mage/cards/c/CaldaiaStrongarm.java index cb68fc55adf..37c27101c57 100644 --- a/Mage.Sets/src/mage/cards/c/CaldaiaStrongarm.java +++ b/Mage.Sets/src/mage/cards/c/CaldaiaStrongarm.java @@ -29,7 +29,7 @@ public final class CaldaiaStrongarm extends CardImpl { // When Caldaia Strongarm enters the battlefield, put two +1/+1 counters on target creature. Ability ability = new EntersBattlefieldTriggeredAbility( - new AddCountersTargetEffect(CounterType.P1P1.createInstance()) + new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)) ); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/n/NightClubber.java b/Mage.Sets/src/mage/cards/n/NightClubber.java index befc9a78fa1..545eef322c0 100644 --- a/Mage.Sets/src/mage/cards/n/NightClubber.java +++ b/Mage.Sets/src/mage/cards/n/NightClubber.java @@ -9,7 +9,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.StaticFilters; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.common.FilterOpponentsCreaturePermanent; import java.util.UUID; @@ -18,6 +19,9 @@ import java.util.UUID; */ public final class NightClubber extends CardImpl { + private static final FilterCreaturePermanent filter + = new FilterOpponentsCreaturePermanent("creatures your opponents control"); + public NightClubber(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}"); @@ -28,8 +32,7 @@ public final class NightClubber extends CardImpl { // When Night Clubber enters the battlefield, creatures your opponents control get -1/-1 until end of turn. this.addAbility(new EntersBattlefieldTriggeredAbility(new BoostAllEffect( - -1, 0, Duration.EndOfTurn, - StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, false + -1, -1, Duration.EndOfTurn, filter, false ))); // Blitz {2}{B} diff --git a/Mage.Sets/src/mage/cards/p/PatchUp.java b/Mage.Sets/src/mage/cards/p/PatchUp.java index 53aa6aa9961..1055cf663d0 100644 --- a/Mage.Sets/src/mage/cards/p/PatchUp.java +++ b/Mage.Sets/src/mage/cards/p/PatchUp.java @@ -48,7 +48,7 @@ class PatchUpTarget extends TargetCardInYourGraveyard { } PatchUpTarget() { - super(0, 2, filter, false); + super(0, 3, filter, false); } private PatchUpTarget(final PatchUpTarget target) { diff --git a/Mage.Sets/src/mage/cards/r/RaffineSchemingSeer.java b/Mage.Sets/src/mage/cards/r/RaffineSchemingSeer.java index 651735a8403..2133863a684 100644 --- a/Mage.Sets/src/mage/cards/r/RaffineSchemingSeer.java +++ b/Mage.Sets/src/mage/cards/r/RaffineSchemingSeer.java @@ -68,7 +68,7 @@ class RaffineSchemingSeerEffect extends OneShotEffect { RaffineSchemingSeerEffect() { super(Outcome.Benefit); - staticText = "target creature connives X, where X is the number of attacking creatures. " + + staticText = "target attacking creature connives X, where X is the number of attacking creatures. " + "(Draw X cards, then discard X cards. Put a +1/+1 counter on that creature " + "for each nonland card discarded this way.)"; } diff --git a/Mage.Sets/src/mage/cards/r/RiveteersDecoy.java b/Mage.Sets/src/mage/cards/r/RiveteersDecoy.java index fa5efd5f99a..5956f8d84dd 100644 --- a/Mage.Sets/src/mage/cards/r/RiveteersDecoy.java +++ b/Mage.Sets/src/mage/cards/r/RiveteersDecoy.java @@ -7,6 +7,7 @@ import mage.abilities.keyword.BlitzAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.SubType; import java.util.UUID; @@ -25,7 +26,7 @@ public final class RiveteersDecoy extends CardImpl { this.toughness = new MageInt(1); // Riveteers Decoy must be blocked if able. - this.addAbility(new SimpleStaticAbility(new MustBeBlockedByAtLeastOneSourceEffect())); + this.addAbility(new SimpleStaticAbility(new MustBeBlockedByAtLeastOneSourceEffect(Duration.WhileOnBattlefield))); // Blitz {3}{G} this.addAbility(new BlitzAbility(this, "{3}{G}")); diff --git a/Mage.Sets/src/mage/cards/t/TenaciousUnderdog.java b/Mage.Sets/src/mage/cards/t/TenaciousUnderdog.java index d8b58724546..c0d8dbcf934 100644 --- a/Mage.Sets/src/mage/cards/t/TenaciousUnderdog.java +++ b/Mage.Sets/src/mage/cards/t/TenaciousUnderdog.java @@ -49,7 +49,7 @@ class TenaciousUnderdogEffect extends AsThoughEffectImpl { TenaciousUnderdogEffect() { super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.PutCreatureInPlay); - staticText = "You may cast {this} from your graveyard"; + staticText = "You may cast {this} from your graveyard using its blitz ability"; } private TenaciousUnderdogEffect(final TenaciousUnderdogEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java index 43b597dd5bb..6e146d01db4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java @@ -45,7 +45,13 @@ public class CantAttackBlockTargetEffect extends RestrictionEffect { if (staticText != null && !staticText.isEmpty()) { return staticText; } - StringBuilder sb = new StringBuilder("target creature can't attack or block "); + StringBuilder sb = new StringBuilder("target "); + if (mode.getTargets().isEmpty()) { + sb.append("creature"); + } else { + sb.append(mode.getTargets().get(0).getTargetName()); + } + sb.append(" can't attack or block "); if (duration == Duration.EndOfTurn) { sb.append("this turn"); } else { diff --git a/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java b/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java index 8a68796219f..252b65554a9 100644 --- a/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/BlitzAbility.java @@ -27,9 +27,6 @@ import java.util.List; public class BlitzAbility extends SpellAbility { public static final String BLITZ_ACTIVATION_VALUE_KEY = "blitzActivation"; - protected static final String KEYWORD = "Blitz"; - protected static final String REMINDER_TEXT = "If you cast this spell for its blitz cost, it gains haste " + - "and \"When this creature dies, draw a card.\" Sacrifice it at the beginning of the next end step."; public BlitzAbility(Card card, String manaString) { super(new ManaCostsImpl<>(manaString), card.getName() + " with Blitz"); @@ -44,6 +41,7 @@ public class BlitzAbility extends SpellAbility { ability.addEffect(new BlitzAddDelayedTriggeredAbilityEffect()); ability.setRuleVisible(false); addSubAbility(ability); + this.ruleAdditionalCostsVisible = false; } private BlitzAbility(final BlitzAbility ability) { @@ -57,7 +55,22 @@ public class BlitzAbility extends SpellAbility { @Override public String getRule() { - return "Blitz"; + StringBuilder sb = new StringBuilder("Blitz"); + if (costs.isEmpty()) { + sb.append(' '); + } else { + sb.append("—"); + } + sb.append(manaCosts.getText()); + if (!costs.isEmpty()) { + sb.append(", "); + sb.append(costs.getText()); + sb.append('.'); + } + sb.append(" (If you cast this spell for its blitz cost, it gains haste "); + sb.append("and \"When this creature dies, draw a card.\" "); + sb.append("Sacrifice it at the beginning of the next end step.)"); + return sb.toString(); } @Override