mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
Merge pull request #13683 from magefree/from-card
Update effects that find a permanent from a card put to battlefield
This commit is contained in:
commit
77830dd24a
133 changed files with 465 additions and 395 deletions
|
|
@ -21,6 +21,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -82,7 +83,7 @@ class AchHansRunEffect extends OneShotEffect {
|
|||
if (card == null || !controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
return false;
|
||||
}
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -73,7 +74,7 @@ class AethermagesTouchEffect extends OneShotEffect {
|
|||
cards.remove(card);
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
// It gains \"At the beginning of your end step, return this creature to its owner's hand.\"
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
Ability ability = new BeginningOfEndStepTriggeredAbility(TargetController.YOU, new ReturnToHandSourceEffect(true), false, null);
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(ability, Duration.Custom);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ class AnimistsAwakeningEffect extends OneShotEffect {
|
|||
|
||||
if (SpellMasteryCondition.instance.apply(game, source)) {
|
||||
for (Card card : toBattlefield) {
|
||||
Permanent land = game.getPermanent(card.getId());
|
||||
Permanent land = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (land != null) {
|
||||
land.untap(game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ class AnzragsRampageEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -80,7 +81,7 @@ class ApprenticeNecromancerEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null && card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
// Gains haste
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -86,7 +87,7 @@ class ArbiterOfTheIdealEffect extends OneShotEffect {
|
|||
controller.revealCards(sourceObject.getIdName(), new CardsImpl(card), game);
|
||||
if (filter.match(card, game) && controller.chooseUse(outcome, "Put " + card.getName() + " onto the battlefield?", source, game)) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
permanent.addCounters(CounterType.MANIFESTATION.createInstance(), source.getControllerId(), source, game);
|
||||
ContinuousEffect effect = new AddCardTypeTargetEffect(Duration.Custom, CardType.ENCHANTMENT);
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -94,7 +95,7 @@ class ArmoredSkyhunterEffect extends OneShotEffect {
|
|||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
cards.removeIf(uuid -> game.getState().getZone(uuid) != Zone.LIBRARY);
|
||||
Permanent equipment = game.getPermanent(card.getId());
|
||||
Permanent equipment = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (equipment == null || !equipment.hasSubtype(SubType.EQUIPMENT, game)) {
|
||||
return player.putCardsOnBottomOfLibrary(cards, game, source, false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ 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;
|
||||
|
||||
|
|
@ -131,7 +132,7 @@ class ArniMetalbrowEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
game.getCombat().addAttackingCreature(creature.getId(), game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -111,7 +112,7 @@ class ArthurMarigoldKnightEffect extends OneShotEffect {
|
|||
)) {
|
||||
return player.putCardsOnBottomOfLibrary(cards, game, source, false);
|
||||
}
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return player.putCardsOnBottomOfLibrary(cards, game, source, false);
|
||||
}
|
||||
|
|
@ -129,4 +130,4 @@ class ArthurMarigoldKnightEffect extends OneShotEffect {
|
|||
public ArthurMarigoldKnightEffect copy() {
|
||||
return new ArthurMarigoldKnightEffect(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.target.TargetPermanent;
|
|||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -172,7 +173,7 @@ class AscentOfTheWorthyReturnEffect extends OneShotEffect {
|
|||
countersToAdd.addCounter(CounterType.FLYING.createInstance());
|
||||
game.setEnterWithCounters(card.getId(), countersToAdd);
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ class AshiokNightmareWeaverPutIntoPlayEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.addEffect(new AddCardSubTypeTargetEffect(
|
||||
SubType.NIGHTMARE, Duration.EndOfTurn
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import mage.constants.Zone;
|
|||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -81,7 +82,8 @@ class AspiringChampionEffect extends OneShotEffect {
|
|||
toReveal.retainZone(Zone.LIBRARY, game);
|
||||
player.putCardsOnBottomOfLibrary(toReveal, game, source, false);
|
||||
player.shuffleLibrary(source, game);
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
game.processAction();
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature == null
|
||||
|| !creature.hasSubtype(SubType.DEMON, game)
|
||||
|| creature.getPower().getValue() < 1) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -79,7 +80,7 @@ class BackForMoreEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -98,7 +99,7 @@ class BalduvianAtrocityEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,9 +14,11 @@ import mage.constants.Outcome;
|
|||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
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;
|
||||
|
||||
|
|
@ -69,13 +71,14 @@ class BondOfRevivalEffect extends OneShotEffect {
|
|||
if (player == null || card == null) {
|
||||
return false;
|
||||
}
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.UntilYourNextTurn);
|
||||
effect.setTargetPointer(new FixedTarget(card.getId(), card.getZoneChangeCounter(game) + 1));
|
||||
if (player.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
game.addEffect(effect, source);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.UntilYourNextTurn);
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -93,7 +94,7 @@ class BreakOutEffect extends OneShotEffect {
|
|||
if (pickedCard.getManaValue() <= 2 &&
|
||||
controller.chooseUse(Outcome.PutCardInPlay, "Put it onto the battlefield?", source, game) &&
|
||||
controller.moveCards(pickedCard, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(pickedCard.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(pickedCard, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -17,11 +17,13 @@ import mage.constants.SpellAbilityType;
|
|||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
public final class BreakingEntering extends SplitCard {
|
||||
|
||||
|
|
@ -68,22 +70,22 @@ class EnteringReturnFromGraveyardToBattlefieldEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Target target = new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE);
|
||||
target.withNotTarget(true);
|
||||
if (target.canChoose(source.getControllerId(), source, game)
|
||||
&& controller.chooseTarget(outcome, target, source, game)) {
|
||||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setTargetPointer(new FixedTarget(card.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
}
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
Target target = new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE).withNotTarget(true);
|
||||
if (target.canChoose(source.getControllerId(), source, game)
|
||||
&& controller.chooseTarget(outcome, target, source, game)) {
|
||||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null && controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* @author LevelX2, TheElk801
|
||||
|
|
@ -94,7 +95,7 @@ class BronzehideLionReturnEffect extends OneShotEffect {
|
|||
}
|
||||
game.addEffect(new BronzehideLionContinuousEffect(game.getState().getZoneChangeCounter(source.getSourceId()) + 1), source);
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent aura = game.getPermanent(card.getId());
|
||||
Permanent aura = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
Permanent creature = game.getPermanent(target.getFirstTarget());
|
||||
if (aura == null || creature == null) {
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -81,7 +82,7 @@ class CantStayAwayEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
controller.moveCards(targetCard, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(targetCard.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(targetCard, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(new SimpleStaticAbility(new CantStayAwayReplacementEffect()), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetCardInHand;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* @author nomage
|
||||
|
|
@ -76,7 +77,7 @@ class CauldronDanceReturnFromGraveyardToBattlefieldTargetEffect extends OneShotE
|
|||
Card card = game.getCard(targetId);
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
ContinuousEffect hasteEffect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
hasteEffect.setTargetPointer(new FixedTarget(creature, game));
|
||||
|
|
@ -123,7 +124,7 @@ class CauldronDancePutCreatureFromHandOntoBattlefieldEffect extends OneShotEffec
|
|||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -98,7 +99,7 @@ class ClericClassReturnEffect extends OneShotEffect {
|
|||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
game.processAction();
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
int toughness = permanent != null ? permanent.getToughness().getValue() : card.getToughness().getValue();
|
||||
player.gainLife(toughness, game, source);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ 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;
|
||||
|
||||
|
|
@ -74,7 +75,7 @@ class CoilingRebirthEffect extends OneShotEffect {
|
|||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
if (GiftWasPromisedCondition.TRUE.apply(game, source)) {
|
||||
game.processAction();
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null && !permanent.isLegendary(game)) {
|
||||
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(
|
||||
null, null, false, 1, false, false,
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import mage.target.targetpointer.FixedTarget;
|
|||
|
||||
import java.util.UUID;
|
||||
import mage.game.permanent.PermanentToken;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
|
|
@ -81,7 +82,7 @@ class ComeBackWrongEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
game.addDelayedTriggeredAbility(new AtTheBeginOfPlayersNextEndStepDelayedTriggeredAbility(
|
||||
new SacrificeTargetEffect("sacrifice it")
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
|
||||
|
|
@ -22,15 +21,17 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class CorpseDance extends CardImpl {
|
||||
|
||||
public CorpseDance(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
|
||||
|
||||
// Buyback {2}
|
||||
this.addAbility(new BuybackAbility("{2}"));
|
||||
|
|
@ -68,32 +69,30 @@ class CorpseDanceEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Card lastCreatureCard = null;
|
||||
for (Card card : controller.getGraveyard().getCards(game)) {
|
||||
if (card.isCreature(game)) {
|
||||
lastCreatureCard = card;
|
||||
}
|
||||
}
|
||||
if (lastCreatureCard != null) {
|
||||
if (controller.moveCards(lastCreatureCard, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent creature = game.getPermanent(lastCreatureCard.getId());
|
||||
if (creature != null) {
|
||||
FixedTarget blueprintTarget = new FixedTarget(creature, game);
|
||||
// Gains Haste
|
||||
ContinuousEffect hasteEffect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
hasteEffect.setTargetPointer(blueprintTarget.copy());
|
||||
game.addEffect(hasteEffect, source);
|
||||
// Exile it at end of turn
|
||||
ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD);
|
||||
exileEffect.setTargetPointer(blueprintTarget.copy());
|
||||
DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect);
|
||||
game.addDelayedTriggeredAbility(delayedAbility, source);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
Card lastCreatureCard = null;
|
||||
for (Card card : controller.getGraveyard().getCards(game)) {
|
||||
if (card.isCreature(game)) {
|
||||
lastCreatureCard = card;
|
||||
}
|
||||
}
|
||||
if (lastCreatureCard != null && controller.moveCards(lastCreatureCard, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(lastCreatureCard, game);
|
||||
if (creature != null) {
|
||||
FixedTarget blueprintTarget = new FixedTarget(creature, game);
|
||||
// Gains Haste
|
||||
ContinuousEffect hasteEffect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
hasteEffect.setTargetPointer(blueprintTarget.copy());
|
||||
game.addEffect(hasteEffect, source);
|
||||
// Exile it at end of turn
|
||||
ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD);
|
||||
exileEffect.setTargetPointer(blueprintTarget.copy());
|
||||
DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect);
|
||||
game.addDelayedTriggeredAbility(delayedAbility, source);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -74,7 +75,7 @@ class DawnOfTheDeadEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null && card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
// gains haste
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
|
|
@ -12,17 +11,19 @@ import mage.cards.Card;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Blinke
|
||||
*/
|
||||
public final class Deathrender extends CardImpl {
|
||||
|
|
@ -33,8 +34,10 @@ public final class Deathrender extends CardImpl {
|
|||
|
||||
// Equipped creature gets +2/+2.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 2)));
|
||||
|
||||
// Whenever equipped creature dies, you may put a creature card from your hand onto the battlefield and attach Deathrender to it.
|
||||
this.addAbility(new DiesAttachedTriggeredAbility(new DeathrenderEffect(), "equipped creature"));
|
||||
|
||||
// Equip {2}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2), false));
|
||||
}
|
||||
|
|
@ -68,19 +71,20 @@ class DeathrenderEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
|
||||
if (controller != null && sourcePermanent != null) {
|
||||
TargetCardInHand target = new TargetCardInHand(0, 1, StaticFilters.FILTER_CARD_CREATURE);
|
||||
if (controller.choose(Outcome.PutCardInPlay, target, source, game)) {
|
||||
Card creatureInHand = game.getCard(target.getFirstTarget());
|
||||
if (creatureInHand != null) {
|
||||
if (controller.moveCards(creatureInHand, Zone.BATTLEFIELD, source, game)) {
|
||||
game.getPermanent(creatureInHand.getId()).addAttachment(sourcePermanent.getId(), source, game);
|
||||
}
|
||||
Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game);
|
||||
if (controller == null || sourcePermanent == null) {
|
||||
return false;
|
||||
}
|
||||
TargetCardInHand target = new TargetCardInHand(0, 1, StaticFilters.FILTER_CARD_CREATURE);
|
||||
if (controller.choose(Outcome.PutCardInPlay, target, source, game)) {
|
||||
Card creatureInHand = game.getCard(target.getFirstTarget());
|
||||
if (creatureInHand != null && controller.moveCards(creatureInHand, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(creatureInHand, game);
|
||||
if (permanent != null) {
|
||||
permanent.addAttachment(sourcePermanent.getId(), source, game);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -66,7 +67,7 @@ class DefossilizeEffect extends OneShotEffect {
|
|||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
game.processAction();
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -81,7 +82,7 @@ class DoorsOfDurinEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,10 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* @author noxx
|
||||
|
|
@ -61,17 +63,18 @@ class DreadSlaverEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
Card card = game.getCard(getTargetPointer().getFirst(game, source));
|
||||
if (controller == null || card == null) {
|
||||
return false;
|
||||
}
|
||||
Card card = game.getCard(getTargetPointer().getFirst(game, source));
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new AddCreatureTypeAdditionEffect(SubType.ZOMBIE, true);
|
||||
effect.setTargetPointer(new FixedTarget(card.getId(), game));
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -82,7 +83,7 @@ class DreamsOfTheDeadEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null && card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(new CumulativeUpkeepAbility(new ManaCostsImpl<>("{2}")), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(creature, game));
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ class ElspethConquersDeathReturnEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
|
@ -136,7 +137,7 @@ class ElspethResplendentLookEffect extends OneShotEffect {
|
|||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
permanent.addCounters(CounterType.SHIELD.createInstance(), source, game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,26 +78,23 @@ class EmergentSequenceEffect extends OneShotEffect {
|
|||
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A);
|
||||
player.searchLibrary(target, source, game);
|
||||
Card card = player.getLibrary().getCard(target.getFirstTarget(), game);
|
||||
Permanent permanent = null;
|
||||
if (card != null) {
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
permanent = game.getPermanent(target.getFirstTarget());
|
||||
}
|
||||
player.shuffleLibrary(source, game);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// boost land
|
||||
game.addEffect(new BecomesCreatureTargetEffect(
|
||||
new FractalToken(), false, true, Duration.Custom
|
||||
).setTargetPointer(new FixedTarget(permanent, game)), source);
|
||||
|
||||
// rules
|
||||
// The last sentence of Emergent Sequence’s ability counts the land it put onto the battlefield.
|
||||
// (2021-04-16)
|
||||
// no ETB yet, so add +1 manually
|
||||
int amount = 1 + EmergentSequenceWatcher.getAmount(source.getControllerId(), game);
|
||||
game.processAction();
|
||||
|
||||
int amount = EmergentSequenceWatcher.getAmount(source.getControllerId(), game);
|
||||
permanent.addCounters(CounterType.P1P1.createInstance(amount), source.getControllerId(), source, game);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ class EmperorOfBonesEffect extends OneShotEffect {
|
|||
}
|
||||
game.setEnterWithCounters(card.getId(), new Counters().addCounter(CounterType.FINALITY.createInstance()));
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(CardUtil.getDefaultCardSideForBattlefield(game, card).getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ 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;
|
||||
|
||||
|
|
@ -86,7 +87,7 @@ class ExtractionSpecialistEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null
|
||||
&& source.getSourcePermanentIfItStillExists(game) != null
|
||||
&& source.isControlledBy(game.getControllerId(source.getSourceId()))) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -64,7 +65,7 @@ class FierceInvocationEffect extends OneShotEffect {
|
|||
Card card = controller.getLibrary().getFromTop(game);
|
||||
if (card != null) {
|
||||
new ManifestEffect(1).apply(game, source);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(2));
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -102,11 +103,11 @@ class FirefluxSquadEffect extends OneShotEffect {
|
|||
return player.putCardsOnBottomOfLibrary(cards, game, source, false);
|
||||
}
|
||||
player.moveCards(toBattlefield, Zone.BATTLEFIELD, source, game, true, false, true, null);
|
||||
permanent = game.getPermanent(toBattlefield.getId());
|
||||
permanent = CardUtil.getPermanentFromCardPutToBattlefield(toBattlefield, game);
|
||||
if (permanent != null) {
|
||||
cards.remove(toBattlefield);
|
||||
game.getCombat().addAttackingCreature(permanent.getId(), game);
|
||||
}
|
||||
return player.putCardsOnBottomOfLibrary(cards, game, source, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class FlashEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
game.processAction();
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
permanent.sacrifice(source, game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import mage.players.Player;
|
|||
import mage.target.Target;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -154,45 +155,44 @@ class FlickerformReturnEffect extends OneShotEffect {
|
|||
}
|
||||
ExileZone exileZone = game.getExile().getExileZone(exileZoneId);
|
||||
Card enchantedCard = exileZone.get(enchantedCardId, game);
|
||||
//skip if exiled card is missing
|
||||
if (enchantedCard != null) {
|
||||
Player owner = game.getPlayer(enchantedCard.getOwnerId());
|
||||
//skip if card's owner is missing
|
||||
if (owner != null) {
|
||||
owner.moveCards(enchantedCard, Zone.BATTLEFIELD, source, game);
|
||||
Permanent newPermanent = game.getPermanent(enchantedCardId);
|
||||
if (newPermanent != null) {
|
||||
Set<Card> toBattlefieldAttached = new HashSet<Card>();
|
||||
for (Card enchantment : exileZone.getCards(game)) {
|
||||
if (filterAura.match(enchantment, game)) {
|
||||
boolean canTarget = false;
|
||||
for (Target target : enchantment.getSpellAbility().getTargets()) {
|
||||
Filter filter = target.getFilter();
|
||||
if (filter.match(newPermanent, game)) {
|
||||
canTarget = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!canTarget) {
|
||||
// Aura stays exiled
|
||||
continue;
|
||||
}
|
||||
game.getState().setValue("attachTo:" + enchantment.getId(), newPermanent);
|
||||
if (enchantedCard == null) {
|
||||
return false;
|
||||
}
|
||||
Player owner = game.getPlayer(enchantedCard.getOwnerId());
|
||||
if (owner == null) {
|
||||
return false;
|
||||
}
|
||||
owner.moveCards(enchantedCard, Zone.BATTLEFIELD, source, game);
|
||||
Permanent newPermanent = CardUtil.getPermanentFromCardPutToBattlefield(enchantedCard, game);
|
||||
if (newPermanent != null) {
|
||||
Set<Card> toBattlefieldAttached = new HashSet<>();
|
||||
for (Card enchantment : exileZone.getCards(game)) {
|
||||
if (filterAura.match(enchantment, game)) {
|
||||
boolean canTarget = false;
|
||||
for (Target target : enchantment.getSpellAbility().getTargets()) {
|
||||
Filter filter = target.getFilter();
|
||||
if (filter.match(newPermanent, game)) {
|
||||
canTarget = true;
|
||||
break;
|
||||
}
|
||||
toBattlefieldAttached.add(enchantment);
|
||||
}
|
||||
if (!toBattlefieldAttached.isEmpty()) {
|
||||
controller.moveCards(toBattlefieldAttached, Zone.BATTLEFIELD, source, game);
|
||||
for (Card card : toBattlefieldAttached) {
|
||||
if (game.getState().getZone(card.getId()) == Zone.BATTLEFIELD) {
|
||||
newPermanent.addAttachment(card.getId(), source, game);
|
||||
}
|
||||
}
|
||||
if (!canTarget) {
|
||||
// Aura stays exiled
|
||||
continue;
|
||||
}
|
||||
game.getState().setValue("attachTo:" + enchantment.getId(), newPermanent);
|
||||
}
|
||||
toBattlefieldAttached.add(enchantment);
|
||||
}
|
||||
if (!toBattlefieldAttached.isEmpty()) {
|
||||
controller.moveCards(toBattlefieldAttached, Zone.BATTLEFIELD, source, game);
|
||||
for (Card card : toBattlefieldAttached) {
|
||||
if (game.getState().getZone(card.getId()) == Zone.BATTLEFIELD) {
|
||||
newPermanent.addAttachment(card.getId(), source, game);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -69,7 +70,7 @@ class FootstepsOfTheGoryoEffect extends OneShotEffect {
|
|||
Card card = game.getCard(getTargetPointer().getFirst(game, source));
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
// Sacrifice it at end of turn
|
||||
Effect sacrificeEffect = new SacrificeTargetEffect("Sacrifice that creature at the beginning of next end step", source.getControllerId());
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -86,7 +87,7 @@ class GiftOfImmortalityEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ 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;
|
||||
|
||||
|
|
@ -83,7 +84,7 @@ class GoryosVengeanceEffect extends OneShotEffect {
|
|||
if (card == null || !controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
return false;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -83,7 +84,7 @@ class GreasefangOkibaBossEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect hasteEffect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
hasteEffect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.target.targetpointer.FixedTargets;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author BetaSteward
|
||||
|
|
@ -90,7 +90,11 @@ class GrimoireOfTheDeadEffect extends OneShotEffect {
|
|||
creatureCards.addAll(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_CREATURE, game));
|
||||
}
|
||||
controller.moveCards(creatureCards, Zone.BATTLEFIELD, source, game);
|
||||
game.addEffect(new GrimoireOfTheDeadEffect2().setTargetPointer(new FixedTargets(creatureCards, game)), source);
|
||||
List<Permanent> permanents = creatureCards.stream()
|
||||
.map(c -> CardUtil.getPermanentFromCardPutToBattlefield(c, game))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
game.addEffect(new GrimoireOfTheDeadEffect2().setTargetPointer(new FixedTargets(permanents, game)), source);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -103,7 +107,7 @@ class GrimoireOfTheDeadEffect extends OneShotEffect {
|
|||
|
||||
class GrimoireOfTheDeadEffect2 extends ContinuousEffectImpl {
|
||||
|
||||
public GrimoireOfTheDeadEffect2() {
|
||||
GrimoireOfTheDeadEffect2() {
|
||||
super(Duration.Custom, Outcome.Neutral);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInOpponentsGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -78,7 +79,7 @@ class GruesomeEncoreEffect extends OneShotEffect {
|
|||
Card card = game.getCard(getTargetPointer().getFirst(game, source));
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
|
|||
import java.util.UUID;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
|
|
@ -88,7 +89,7 @@ class HansErikssonEffect extends OneShotEffect {
|
|||
return player.moveCards(card, Zone.HAND, source, game);
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ class HavengulMysteryEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -90,7 +91,7 @@ class HellkiteCourserEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ 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;
|
||||
|
||||
|
|
@ -92,7 +93,7 @@ class HowlpackPiperEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game);
|
||||
if (permanent == null || sourcePermanent == null) {
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -89,7 +90,7 @@ class IlhargTheRazeBoarEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, true, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -90,7 +91,7 @@ class ImpromptuRaidEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -94,7 +95,7 @@ class InfernalVesselReturnEffect extends OneShotEffect {
|
|||
effect.setTargetPointer(new FixedTarget(card, game));
|
||||
effect.apply(game, source);
|
||||
game.processAction();
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.addEffect(new AddCardSubTypeTargetEffect(
|
||||
SubType.DEMON, Duration.Custom
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import mage.game.events.GameEvent;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -127,7 +128,7 @@ class KaaliaOfTheVastEffect extends OneShotEffect {
|
|||
UUID defenderId = game.getCombat().getDefendingPlayerId(source.getSourceId(), game);
|
||||
if (defenderId != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent creature = game.getPermanent(cardId);
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (creature != null) {
|
||||
game.getCombat().addAttackerToCombat(card.getId(), defenderId, game);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ 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;
|
||||
|
||||
|
|
@ -83,7 +84,7 @@ class KamiOfIndustryEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ class KarnLiberatedEffect extends OneShotEffect {
|
|||
|
||||
private KarnLiberatedEffect(final KarnLiberatedEffect effect) {
|
||||
super(effect);
|
||||
this.exileId = effect.exileId;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -201,7 +202,7 @@ class KarnLiberatedDelayedEffect extends OneShotEffect {
|
|||
controller.moveCards(cards, Zone.BATTLEFIELD, source, game);
|
||||
for (Card card : cards.getCards(game)) {
|
||||
if (card != null) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
((PermanentImpl) permanent).removeSummoningSickness();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -79,7 +80,7 @@ class KheruLichLordEffect extends OneShotEffect {
|
|||
Card card = cards.getRandom(game);
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
FixedTarget blueprintTarget = new FixedTarget(permanent, game);
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Library;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -82,7 +83,7 @@ class KillerInstinctEffect extends OneShotEffect {
|
|||
}
|
||||
player.revealCards(sourceObject.getIdName(), new CardsImpl(card), game);
|
||||
if (card.isCreature(game) && player.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
FixedTarget blueprintTarget = new FixedTarget(permanent, game);
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import mage.game.events.GameEvent;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
import mage.watchers.Watcher;
|
||||
|
||||
import java.util.*;
|
||||
|
|
@ -134,7 +135,7 @@ class KodamaOfTheEastTreeEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent otherPermanent = game.getPermanent(card.getId());
|
||||
Permanent otherPermanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (otherPermanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,12 +16,12 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ class LimDulTheNecromancerEffect extends OneShotEffect {
|
|||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)
|
||||
&& card.isCreature(game)) {
|
||||
Permanent creature = game.getPermanent(card.getId());
|
||||
Permanent creature = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
ContinuousEffect effect = new AddCardSubTypeTargetEffect(SubType.ZOMBIE, Duration.WhileOnBattlefield);
|
||||
effect.setTargetPointer(new FixedTarget(creature.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInOpponentsGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -75,7 +76,7 @@ class MacabreMockeryEffect extends OneShotEffect {
|
|||
if (controller == null || !controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
return false;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -84,7 +85,7 @@ class MakeshiftMannequinEffect extends OneShotEffect {
|
|||
counters.addCounter(CounterType.MANNEQUIN.createInstance());
|
||||
game.setEnterWithCounters(cardId, counters);
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(cardId);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect gainedEffect = new MakeshiftMannequinGainAbilityEffect();
|
||||
// Bug #6885 Fixed when owner/controller leaves the game the effect still applies
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ 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.Objects;
|
||||
import java.util.UUID;
|
||||
|
|
@ -185,7 +186,7 @@ class LukkaWaywardBonderReturnEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -88,7 +89,7 @@ class MinionOfTheMightyEffect extends OneShotEffect {
|
|||
card, Zone.BATTLEFIELD, source, game, true,
|
||||
false, true, null
|
||||
);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.getCombat().addAttackingCreature(permanent.getId(), game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ 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;
|
||||
|
||||
|
|
@ -91,7 +92,7 @@ class MoiraAndTesharEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null && card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
// It gains haste
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -113,7 +114,7 @@ class NahiriTheHarbingerEffect extends SearchEffect {
|
|||
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), permanent.getZoneChangeCounter(game)));
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import mage.players.Player;
|
|||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -95,10 +96,13 @@ class NecromanticSelectionEffect extends OneShotEffect {
|
|||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
ContinuousEffect effect = new AddCreatureTypeAdditionEffect(SubType.ZOMBIE, true);
|
||||
effect.setText("It's a black Zombie in addition to its other colors and types");
|
||||
effect.setTargetPointer(new FixedTarget(card.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new AddCreatureTypeAdditionEffect(SubType.ZOMBIE, true);
|
||||
effect.setText("It's a black Zombie in addition to its other colors and types");
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), game));
|
||||
game.addEffect(effect, source);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -3,25 +3,20 @@ package mage.cards.n;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.Cost;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.counters.Counters;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.EntersTheBattlefieldEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -88,12 +83,8 @@ class NeoformEffect extends OneShotEffect {
|
|||
if (controller.searchLibrary(target, source, game)) {
|
||||
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
|
||||
if (card != null) {
|
||||
ContinuousEffectImpl effect = new NeoformReplacementEffect();
|
||||
effect.setTargetPointer(new FixedTarget(card, game));
|
||||
game.addEffect(effect, source);
|
||||
if (!controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
effect.discard();
|
||||
}
|
||||
game.setEnterWithCounters(card.getId(), new Counters(CounterType.P1P1.createInstance()));
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
}
|
||||
}
|
||||
controller.shuffleLibrary(source, game);
|
||||
|
|
@ -105,39 +96,3 @@ class NeoformEffect extends OneShotEffect {
|
|||
return new NeoformEffect(this);
|
||||
}
|
||||
}
|
||||
|
||||
class NeoformReplacementEffect extends ReplacementEffectImpl {
|
||||
|
||||
NeoformReplacementEffect() {
|
||||
super(Duration.EndOfStep, Outcome.BoostCreature);
|
||||
}
|
||||
|
||||
private NeoformReplacementEffect(NeoformReplacementEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checksEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
return event.getTargetId().equals(getTargetPointer().getFirst(game, source));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||
Permanent creature = ((EntersTheBattlefieldEvent) event).getTarget();
|
||||
if (creature != null) {
|
||||
creature.addCounters(CounterType.P1P1.createInstance(), source.getControllerId(), source, game, event.getAppliedEffects());
|
||||
}
|
||||
discard();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NeoformReplacementEffect copy() {
|
||||
return new NeoformReplacementEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import mage.target.TargetCard;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -92,9 +93,12 @@ class NextOfKinDiesEffect extends OneShotEffect {
|
|||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Effect returnToBattlefieldAttachedEffect = new ReturnToBattlefieldAttachedEffect();
|
||||
returnToBattlefieldAttachedEffect.setTargetPointer(new FixedTarget(card, game));
|
||||
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(returnToBattlefieldAttachedEffect), source);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
Effect returnToBattlefieldAttachedEffect = new ReturnToBattlefieldAttachedEffect();
|
||||
returnToBattlefieldAttachedEffect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(returnToBattlefieldAttachedEffect), source);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import mage.game.permanent.PermanentToken;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
import mage.util.ManaUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -144,7 +145,7 @@ class NimDeathmantleEffect extends OneShotEffect {
|
|||
// check if it's still in graveyard
|
||||
if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
permanent.addAttachment(equipment.getId(), source, game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -93,7 +94,7 @@ class NissaWorldwakerSearchEffect extends OneShotEffect {
|
|||
Card card = controller.getLibrary().getCard(cardId, game);
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent land = game.getPermanent(card.getId());
|
||||
Permanent land = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (land != null) {
|
||||
ContinuousEffect effect = new BecomesCreatureTargetEffect(new NissaWorldwakerToken(), false, true, Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(land, game));
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -76,7 +77,7 @@ class NotDeadAfterAllEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, true, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -86,4 +87,4 @@ class NotDeadAfterAllEffect extends OneShotEffect {
|
|||
.apply(game, source);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -79,7 +80,7 @@ class OkibaSalvageEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null && ControlArtifactAndEnchantmentCondition.instance.apply(game, source)) {
|
||||
permanent.addCounters(CounterType.P1P1.createInstance(2), source, game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.game.permanent.token.TrollWarriorToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -117,7 +118,7 @@ class OldGrowthTrollReturnEffect extends OneShotEffect {
|
|||
}
|
||||
game.addEffect(new OldGrowthTrollContinuousEffect(game.getState().getZoneChangeCounter(source.getSourceId()) + 1), source);
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent aura = game.getPermanent(card.getId());
|
||||
Permanent aura = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
Permanent creature = game.getPermanent(target.getFirstTarget());
|
||||
if (aura == null || creature == null) {
|
||||
return true;
|
||||
|
|
@ -198,7 +199,7 @@ class OldGrowthTrollContinuousEffect extends ContinuousEffectImpl {
|
|||
return new OldGrowthTrollContinuousEffect(this);
|
||||
}
|
||||
|
||||
private static final Ability makeAbility() {
|
||||
private static Ability makeAbility() {
|
||||
Ability activatedAbility = new SimpleActivatedAbility(
|
||||
new CreateTokenEffect(new TrollWarriorToken(), 1, true, false), new GenericManaCost(1)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ 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;
|
||||
|
||||
|
|
@ -89,7 +90,7 @@ class OliviaCrimsonBrideEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ 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;
|
||||
|
||||
|
|
@ -120,7 +121,7 @@ class OviyaAutomechArtisanEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null && permanent.isArtifact(game)) {
|
||||
permanent.addCounters(CounterType.P1P1.createInstance(2), source, game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.players.Player;
|
|||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -116,7 +117,7 @@ class OwlbearCubEffect extends OneShotEffect {
|
|||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card != null) {
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.getCombat().addAttackerToCombat(permanent.getId(), getTargetPointer().getFirst(game, source), game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -79,7 +80,7 @@ class PaladinElizabethTaggerdyEffect extends OneShotEffect {
|
|||
Card card = controller.getHand().get(cardId, game);
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, true, null)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.getCombat().addAttackingCreature(permanent.getId(), game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ class PheliaExuberantShepherdEffect extends OneShotEffect {
|
|||
boolean enteredUnderYourControl = false;
|
||||
for (Card card : cards) {
|
||||
// Try to find the permanent that card became
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null && permanent.getControllerId().equals(source.getControllerId())) {
|
||||
enteredUnderYourControl = true;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -91,7 +92,7 @@ class PlaneboundAccompliceEffect extends OneShotEffect {
|
|||
if (!controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
return false;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -102,4 +103,4 @@ class PlaneboundAccompliceEffect extends OneShotEffect {
|
|||
game.addDelayedTriggeredAbility(delayedAbility, source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetadjustment.XManaValueTargetAdjuster;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -73,7 +74,7 @@ class PostmortemLungeEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
if (cardOwner.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ 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,7 +91,7 @@ class PreWarFormalwerEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
new AttachEffect(Outcome.BoostCreature)
|
||||
.setTargetPointer(new FixedTarget(permanent.getId()))
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -77,7 +78,7 @@ class PreeminentCaptainEffect extends OneShotEffect {
|
|||
Card card = controller.getHand().get(cardId, game);
|
||||
if (card != null) {
|
||||
if (controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, true, null)) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.getCombat().addAttackingCreature(permanent.getId(), game);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -71,7 +72,7 @@ class PresumedDeadEffect extends OneShotEffect {
|
|||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null);
|
||||
game.processAction();
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
permanent.setSuspected(true, game, source);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import mage.players.Player;
|
|||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInOpponentsGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -89,7 +90,7 @@ class PuppeteerCliqueEffect extends OneShotEffect {
|
|||
if (controller == null || !controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
return false;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -114,7 +115,7 @@ class PurphurosBronzeBloodedEffect extends OneShotEffect {
|
|||
if (card == null || !controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
return false;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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("<br>"));
|
||||
|
|
@ -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<Permanent> 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());
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import mage.players.Player;
|
|||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -91,7 +92,7 @@ class QuestForTheHolyRelicEffect extends OneShotEffect {
|
|||
if (controller.searchLibrary(target, source, game)) {
|
||||
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
|
||||
if (card != null && controller.moveCards(card, Zone.BATTLEFIELD, source, game)) {
|
||||
Permanent equipment = game.getPermanent(card.getId());
|
||||
Permanent equipment = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
Target targetCreature = new TargetControlledCreaturePermanent();
|
||||
if (equipment != null && controller.choose(Outcome.BoostCreature, targetCreature, source, game)) {
|
||||
Permanent permanent = game.getPermanent(targetCreature.getFirstTarget());
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ class RallyTheAncestorsEffect extends OneShotEffect {
|
|||
List<Permanent> toExile = new ArrayList<>(cards.size());
|
||||
for (Card card : cards) {
|
||||
if (card != null) {
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
toExile.add(permanent);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import mage.game.permanent.token.custom.CreatureToken;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -72,7 +73,7 @@ class RampagingGrowthEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.addEffect(new BecomesCreatureTargetEffect(
|
||||
new CreatureToken(4, 3, "", SubType.INSECT
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import mage.target.common.TargetCardInGraveyard;
|
|||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -103,7 +104,7 @@ class RealmbreakerTheInvasionTreeEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ 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;
|
||||
|
||||
|
|
@ -72,7 +73,7 @@ class ReturnTriumphantAbility extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -82,4 +83,4 @@ class ReturnTriumphantAbility extends OneShotEffect {
|
|||
.apply(game, source);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.game.permanent.token.ElfWarriorToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -70,7 +71,7 @@ class ReturnUponTheTideEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,36 +1,26 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.SearchEffect;
|
||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.SubTypes;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -92,7 +82,7 @@ class SavageOrderEffect extends SearchEffect {
|
|||
Card card = controller.getLibrary().getCard(target.getFirstTarget(), game);
|
||||
if (card != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.UntilYourNextTurn);
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), permanent.getZoneChangeCounter(game)));
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import mage.players.Player;
|
|||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetadjustment.XManaValueTargetAdjuster;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -84,7 +85,7 @@ class ScrapWelderEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance());
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
|
|
|
|||
|
|
@ -15,8 +15,10 @@ 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.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -67,14 +69,17 @@ class ScytheOfTheWretchedReanimateEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Card card = game.getCard(getTargetPointer().getFirst(game, source));
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (card != null && controller != null) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Effect effect = new AttachEffect(Outcome.AddAbility);
|
||||
effect.setTargetPointer(new FixedTarget(card.getId()));
|
||||
effect.apply(game, source);
|
||||
return true;
|
||||
if (card == null || controller == null) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
Effect effect = new AttachEffect(Outcome.AddAbility);
|
||||
effect.setTargetPointer(new FixedTarget(permanent.getId(), game));
|
||||
effect.apply(game, source);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
|
|
@ -10,20 +9,19 @@ import mage.abilities.effects.Effect;
|
|||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.common.SacrificeTargetEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -75,18 +73,19 @@ class SeraphEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Card creatureCard = game.getCard(getTargetPointer().getFirst(game, source));
|
||||
if (controller != null
|
||||
&& creatureCard != null
|
||||
&& game.getState().getZone(creatureCard.getId()) == Zone.GRAVEYARD) { // must be still in the graveyard
|
||||
controller.moveCards(creatureCard, Zone.BATTLEFIELD, source, game, false, false, false, null);
|
||||
OneShotEffect effect = new SacrificeTargetEffect();
|
||||
if (controller == null || creatureCard == null) {
|
||||
return false;
|
||||
}
|
||||
controller.moveCards(creatureCard, Zone.BATTLEFIELD, source, game, false, false, false, null);
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(creatureCard, game);
|
||||
if (permanent != null) {
|
||||
SacrificeTargetEffect effect = new SacrificeTargetEffect();
|
||||
effect.setText("Sacrifice this if Seraph leaves the battlefield or its current controller loses control of it.");
|
||||
effect.setTargetPointer(new FixedTarget(creatureCard.getId()));
|
||||
effect.setTargetPointer(new FixedTarget(permanent, game));
|
||||
SeraphDelayedTriggeredAbility dTA = new SeraphDelayedTriggeredAbility(effect, source.getSourceId());
|
||||
game.addDelayedTriggeredAbility(dTA, source);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -117,15 +116,7 @@ class SeraphDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.LOST_CONTROL
|
||||
&& event.getTargetId().equals(seraph)) {
|
||||
return true;
|
||||
}
|
||||
if (event.getType() == GameEvent.EventType.ZONE_CHANGE
|
||||
&& event.getTargetId().equals(seraph)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return event.getTargetId().equals(seraph);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -99,7 +100,7 @@ class ShadowfaxLordOfHorsesEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, true, null);
|
||||
Permanent permanent = game.getPermanent(card.getId());
|
||||
Permanent permanent = CardUtil.getPermanentFromCardPutToBattlefield(card, game);
|
||||
if (permanent != null) {
|
||||
game.getCombat().addAttackingCreature(permanent.getId(), game);
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue