diff --git a/Mage.Sets/src/mage/cards/a/AyaraFurnaceQueen.java b/Mage.Sets/src/mage/cards/a/AyaraFurnaceQueen.java
index d8451ecda69..686133de413 100644
--- a/Mage.Sets/src/mage/cards/a/AyaraFurnaceQueen.java
+++ b/Mage.Sets/src/mage/cards/a/AyaraFurnaceQueen.java
@@ -15,9 +15,11 @@ import mage.constants.*;
import mage.filter.FilterCard;
import mage.filter.predicate.Predicates;
import mage.game.Game;
+import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard;
import mage.target.targetpointer.FixedTarget;
+import mage.util.CardUtil;
import java.util.UUID;
@@ -90,17 +92,18 @@ class AyaraFurnaceQueenEffect extends OneShotEffect {
if (player == null || card == null) {
return false;
}
- player.moveCards(card, Zone.BATTLEFIELD, source, game);
- if (game.getPermanent(card.getId()) == null) {
+ Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
+ if (permanent == null) {
return false;
}
game.addEffect(new GainAbilityTargetEffect(
HasteAbility.getInstance(), Duration.Custom
- ).setTargetPointer(new FixedTarget(card.getId(), game)), source);
+ ).setTargetPointer(new FixedTarget(permanent.getId(), game)), source);
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(
new ExileTargetEffect().setText("exile it")
- .setTargetPointer(new FixedTarget(card.getId(), game)),
+ .setTargetPointer(new FixedTarget(permanent.getId(), game)),
TargetController.ANY
), source);
- return true;}
+ return true;
+ }
}
diff --git a/Mage.Sets/src/mage/cards/c/CultivatorColossus.java b/Mage.Sets/src/mage/cards/c/CultivatorColossus.java
index 6a1104d4d7a..7898eff956c 100644
--- a/Mage.Sets/src/mage/cards/c/CultivatorColossus.java
+++ b/Mage.Sets/src/mage/cards/c/CultivatorColossus.java
@@ -14,9 +14,11 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
+import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetCard;
import mage.target.common.TargetCardInHand;
+import mage.util.CardUtil;
import java.util.UUID;
@@ -78,7 +80,7 @@ class CultivatorColossusEffect extends OneShotEffect {
if (player == null) {
return false;
}
- while (player.getHand().count(StaticFilters.FILTER_CARD_LAND, game) > 0) {
+ while (player.canRespond() && player.getHand().count(StaticFilters.FILTER_CARD_LAND, game) > 0) {
TargetCard target = new TargetCardInHand(
0, 1, StaticFilters.FILTER_CARD_LAND
);
@@ -91,10 +93,10 @@ class CultivatorColossusEffect extends OneShotEffect {
card, Zone.BATTLEFIELD, source, game, true,
false, false, null
);
- if (game.getPermanent(card.getId()) == null) {
- break;
+ Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
+ if (permanent != null) {
+ player.drawCards(1, source, game);
}
- player.drawCards(1, source, game);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/i/ItDoesntAddUp.java b/Mage.Sets/src/mage/cards/i/ItDoesntAddUp.java
index 5ed94ee01fc..582ddae3de7 100644
--- a/Mage.Sets/src/mage/cards/i/ItDoesntAddUp.java
+++ b/Mage.Sets/src/mage/cards/i/ItDoesntAddUp.java
@@ -12,6 +12,7 @@ import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard;
+import mage.util.CardUtil;
import java.util.Optional;
import java.util.UUID;
@@ -63,7 +64,7 @@ class ItDoesntAddUpEffect extends OneShotEffect {
return false;
}
player.moveCards(card, Zone.BATTLEFIELD, source, game);
- Optional.ofNullable(game.getPermanent(card.getId()))
+ Optional.ofNullable(CardUtil.getPermanentFromCardPutToBattlefield(card, game))
.ifPresent(permanent -> permanent.setSuspected(true, game, source));
return true;
}
diff --git a/Mage.Sets/src/mage/cards/p/PushTheLimit.java b/Mage.Sets/src/mage/cards/p/PushTheLimit.java
index 1ee2960811f..7ec0e82411b 100644
--- a/Mage.Sets/src/mage/cards/p/PushTheLimit.java
+++ b/Mage.Sets/src/mage/cards/p/PushTheLimit.java
@@ -1,51 +1,47 @@
package mage.cards.p;
+import mage.abilities.Ability;
+import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.SacrificeTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.effects.common.continuous.VehiclesBecomeArtifactCreatureEffect;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.*;
+import mage.filter.FilterCard;
+import mage.filter.FilterPermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.Predicates;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTargets;
+import mage.util.CardUtil;
+
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
-import mage.MageObjectReference;
-import mage.abilities.Ability;
-import mage.abilities.DelayedTriggeredAbility;
-import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.*;
-import mage.abilities.effects.common.continuous.BecomesSubtypeAllEffect;
-import mage.abilities.effects.common.continuous.CreaturesBecomeOtherTypeEffect;
-import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
-import mage.abilities.effects.common.continuous.VehiclesBecomeArtifactCreatureEffect;
-import mage.abilities.keyword.HasteAbility;
-import mage.cards.Card;
-import mage.cards.CardImpl;
-import mage.cards.CardSetInfo;
-import mage.cards.Cards;
-import mage.constants.*;
-import mage.filter.FilterCard;
-import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.MageObjectReferencePredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.targetpointer.FixedTargets;
-
/**
*
* @author Jmlundeen
*/
public final class PushTheLimit extends CardImpl {
+
private static final FilterPermanent filterCreatures = new FilterControlledPermanent("Creatures you control");
public PushTheLimit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}");
-
// Return all Mount and Vehicle cards from your graveyard to the battlefield. Sacrifice them at the beginning of the next end step.
this.getSpellAbility().addEffect(new PushTheLimitEffect());
+
// Vehicles you control become artifact creatures until end of turn. Creatures you control gain haste until end of turn.
this.getSpellAbility().addEffect(new VehiclesBecomeArtifactCreatureEffect(Duration.EndOfTurn)
.concatBy("
"));
@@ -63,6 +59,7 @@ public final class PushTheLimit extends CardImpl {
}
class PushTheLimitEffect extends OneShotEffect {
+
private static final FilterCard filter = new FilterCard("Mount and Vehicle cards");
static {
filter.add(Predicates.or(
@@ -70,13 +67,14 @@ class PushTheLimitEffect extends OneShotEffect {
SubType.VEHICLE.getPredicate()
));
}
- public PushTheLimitEffect() {
+
+ PushTheLimitEffect() {
super(Outcome.PutCreatureInPlay);
staticText = "return all " + filter.getMessage() + " from your graveyard to the battlefield. " +
"Sacrifice them at the beginning of the next end step.";
}
- public PushTheLimitEffect(final PushTheLimitEffect effect) {
+ private PushTheLimitEffect(final PushTheLimitEffect effect) {
super(effect);
}
@@ -96,7 +94,7 @@ class PushTheLimitEffect extends OneShotEffect {
false, false, false, null);
if (result) {
List permanentsToSac = cards.stream()
- .map(card -> game.getPermanent(card.getId()))
+ .map(card -> CardUtil.getPermanentFromCardPutToBattlefield(card, game))
.filter(Objects::nonNull)
.collect(Collectors.toList());
Effect sacrificeEffect = new SacrificeTargetEffect("sacrifice them", source.getControllerId());