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