From a6fcaab6980d77f3e0b5cdeb1a3e4b4bf3aa4d13 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 24 Dec 2021 19:30:31 -0500 Subject: [PATCH] fixed various instances of getting source name (fixes #8531, fixes #8528) --- Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java | 6 ++---- Mage.Sets/src/mage/cards/b/BottledCloister.java | 6 ++---- .../src/mage/cards/c/ChandraHeartOfFire.java | 5 ++--- .../src/mage/cards/c/CurseOfHospitality.java | 2 +- Mage.Sets/src/mage/cards/d/DarkImpostor.java | 6 +----- Mage.Sets/src/mage/cards/e/EndlessHorizons.java | 6 ++---- Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java | 6 ++---- Mage.Sets/src/mage/cards/f/FreeForAll.java | 6 ++---- .../src/mage/cards/g/GisaGloriousResurrector.java | 2 +- Mage.Sets/src/mage/cards/h/HedonistsTrove.java | 15 ++++++--------- Mage.Sets/src/mage/cards/h/Hypnox.java | 6 ++---- Mage.Sets/src/mage/cards/i/IgnorantBliss.java | 6 ++---- Mage.Sets/src/mage/cards/i/InducedAmnesia.java | 6 ++---- Mage.Sets/src/mage/cards/l/LegionsInitiative.java | 6 ++---- .../src/mage/cards/m/MindFlayerTheShadow.java | 2 +- Mage.Sets/src/mage/cards/m/Mindreaver.java | 6 ++---- Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java | 2 +- .../src/mage/cards/p/ProwlingGeistcatcher.java | 2 +- Mage.Sets/src/mage/cards/p/PsychicTheft.java | 9 +++------ Mage.Sets/src/mage/cards/r/RobberOfTheRich.java | 6 ++---- Mage.Sets/src/mage/cards/r/RogueClass.java | 4 +--- Mage.Sets/src/mage/cards/w/WallOfMourning.java | 2 +- Mage.Sets/src/mage/cards/w/WizardsSpellbook.java | 4 +--- .../costs/common/ExileFromGraveCost.java | 3 +-- .../abilities/effects/common/ExileAllEffect.java | 6 ++---- .../effects/common/ExileFromZoneTargetEffect.java | 4 +--- .../ExileTopXMayPlayUntilEndOfTurnEffect.java | 3 +-- .../effects/common/MistmeadowWitchEffect.java | 6 ++---- Mage/src/main/java/mage/util/CardUtil.java | 5 +++++ 29 files changed, 54 insertions(+), 94 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java b/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java index 32ee4804fbe..26b383bded4 100644 --- a/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java +++ b/Mage.Sets/src/mage/cards/b/BaneAlleyBroker.java @@ -1,7 +1,6 @@ package mage.cards.b; import mage.MageInt; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -111,12 +110,11 @@ class BaneAlleyBrokerDrawExileEffect extends OneShotEffect { TargetCard target = new TargetCardInHand().withChooseHint("to exile"); controller.chooseTarget(outcome, controller.getHand(), target, source, game); Card card = game.getCard(target.getFirstTarget()); - MageObject sourceObject = source.getSourcePermanentOrLKI(game); - if (card == null || sourceObject == null) { + if (card == null) { return false; } if (!controller.moveCardsToExile( - card, source, game, false, CardUtil.getExileZoneId(game, source), sourceObject.getIdName() + card, source, game, false, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) )) { return false; } diff --git a/Mage.Sets/src/mage/cards/b/BottledCloister.java b/Mage.Sets/src/mage/cards/b/BottledCloister.java index f924fdef067..91abfd1f7c3 100644 --- a/Mage.Sets/src/mage/cards/b/BottledCloister.java +++ b/Mage.Sets/src/mage/cards/b/BottledCloister.java @@ -1,6 +1,5 @@ package mage.cards.b; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -67,15 +66,14 @@ class BottledCloisterExileEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject sourceObject = source.getSourceObject(game); - if (controller == null || sourceObject == null) { + if (controller == null) { return false; } Cards cards = new CardsImpl(controller.getHand()); if (cards.isEmpty()) { return false; } - controller.moveCardsToExile(cards.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), sourceObject.getIdName()); + controller.moveCardsToExile(cards.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); cards.getCards(game) .stream() .filter(c -> game.getState().getZone(c.getId()) == Zone.EXILED) diff --git a/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java b/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java index e1e8e11977f..4453a0e4263 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java +++ b/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java @@ -27,11 +27,11 @@ import mage.target.common.TargetAnyTarget; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInYourGraveyard; import mage.target.targetpointer.FixedTargets; +import mage.util.CardUtil; import java.util.HashSet; import java.util.Set; import java.util.UUID; -import mage.util.CardUtil; /** * @author htrajan @@ -117,8 +117,7 @@ class ChandraHeartOfFireUltimateEffect extends OneShotEffect { } // exile cards all at once and set the exile name to the source card - Card sourceCard = game.getCard(source.getSourceId()); - controller.moveCardsToExile(exiledCards, source, game, true, CardUtil.getExileZoneId(game, source), sourceCard.getName()); + controller.moveCardsToExile(exiledCards, source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); controller.shuffleLibrary(source, game); exiledCards.removeIf(card -> !Zone.EXILED.equals(game.getState().getZone(card.getId()))); diff --git a/Mage.Sets/src/mage/cards/c/CurseOfHospitality.java b/Mage.Sets/src/mage/cards/c/CurseOfHospitality.java index 791c905b46c..28264cd8bdd 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfHospitality.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfHospitality.java @@ -154,7 +154,7 @@ class CurseOfHospitalityEffect extends OneShotEffect { enchanted.moveCardsToExile( card, source, game, true, CardUtil.getExileZoneId(game, source), - CardUtil.getSourceLogName(game, source) + CardUtil.getSourceName(game, source) ); Player player = game.getPlayer(getTargetPointer().getFirst(game, source)); if (player == null) { diff --git a/Mage.Sets/src/mage/cards/d/DarkImpostor.java b/Mage.Sets/src/mage/cards/d/DarkImpostor.java index b3b21f423d0..31397b6dfd6 100644 --- a/Mage.Sets/src/mage/cards/d/DarkImpostor.java +++ b/Mage.Sets/src/mage/cards/d/DarkImpostor.java @@ -83,12 +83,8 @@ class DarkImpostorExileTargetEffect extends OneShotEffect { if (player == null || permanent == null) { return false; } - Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game); - if (sourcePermanent == null) { - return player.moveCards(permanent, Zone.EXILED, source, game); - } return player.moveCardsToExile( - permanent, source, game, true, CardUtil.getExileZoneId(game, source), sourcePermanent.getIdName() + permanent, source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) ); } } diff --git a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java index faee405ca90..99eb91e8a45 100644 --- a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java +++ b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java @@ -8,7 +8,6 @@ import mage.cards.*; import mage.constants.*; import mage.filter.FilterCard; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetCard; import mage.target.common.TargetCardInExile; @@ -68,8 +67,7 @@ class EndlessHorizonsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - Permanent permanent = source.getSourcePermanentOrLKI(game); - if (permanent == null || player == null) { + if (player == null) { return false; } TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, filter); @@ -80,7 +78,7 @@ class EndlessHorizonsEffect extends OneShotEffect { .map(uuid -> player.getLibrary().getCard(uuid, game)) .filter(Objects::nonNull) .forEach(cards::add); - player.moveCardsToExile(cards.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), permanent.getIdName()); + player.moveCardsToExile(cards.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); player.shuffleLibrary(source, game); return true; } diff --git a/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java b/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java index 145bca509a9..04ac8592278 100644 --- a/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java +++ b/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java @@ -1,7 +1,6 @@ package mage.cards.f; import mage.MageInt; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -77,8 +76,7 @@ class FiendOfTheShadowsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(targetPointer.getFirst(game, source)); - MageObject sourceObject = source.getSourceObject(game); - if (player == null || sourceObject == null || player.getHand().isEmpty()) { + if (player == null || player.getHand().isEmpty()) { return false; } TargetCard targetCard = new TargetDiscard(player.getId()); @@ -88,7 +86,7 @@ class FiendOfTheShadowsEffect extends OneShotEffect { return false; } player.moveCardToExileWithInfo( - card, CardUtil.getExileZoneId(game, source), sourceObject.getName(), + card, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source), source, game, Zone.HAND, true ); CardUtil.makeCardPlayable(game, source, card, Duration.Custom, false); diff --git a/Mage.Sets/src/mage/cards/f/FreeForAll.java b/Mage.Sets/src/mage/cards/f/FreeForAll.java index 77cef34a0e7..c82f5d67618 100644 --- a/Mage.Sets/src/mage/cards/f/FreeForAll.java +++ b/Mage.Sets/src/mage/cards/f/FreeForAll.java @@ -16,7 +16,6 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.ExileZone; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.players.Player; import mage.util.CardUtil; @@ -69,15 +68,14 @@ class FreeForAllExileAllEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - Permanent sourcePermanent = source.getSourcePermanentOrLKI(game); - if (player == null || sourcePermanent == null) { + if (player == null) { return false; } Cards cards = new CardsImpl(); game.getBattlefield().getActivePermanents( StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), source.getSourceId(), game ).stream().forEach(cards::add); - player.moveCardsToExile(cards.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), sourcePermanent.getIdName()); + player.moveCardsToExile(cards.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); cards.getCards(game) .stream() .filter(card -> game.getState().getZone(card.getId()) == Zone.EXILED) diff --git a/Mage.Sets/src/mage/cards/g/GisaGloriousResurrector.java b/Mage.Sets/src/mage/cards/g/GisaGloriousResurrector.java index d21bd6a7c0e..bd1e929324b 100644 --- a/Mage.Sets/src/mage/cards/g/GisaGloriousResurrector.java +++ b/Mage.Sets/src/mage/cards/g/GisaGloriousResurrector.java @@ -89,7 +89,7 @@ class GisaGloriousResurrectorExileEffect extends ReplacementEffectImpl { + game.getState().getZoneChangeCounter(source.getSourceId()), source); return player.moveCardsToExile( zEvent.getTarget(), source, game, false, - CardUtil.getExileZoneId(game, source), "Gisa, Glorious Resurrector" + CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) ); } diff --git a/Mage.Sets/src/mage/cards/h/HedonistsTrove.java b/Mage.Sets/src/mage/cards/h/HedonistsTrove.java index 9cb9bd9acb4..76ce68200ad 100644 --- a/Mage.Sets/src/mage/cards/h/HedonistsTrove.java +++ b/Mage.Sets/src/mage/cards/h/HedonistsTrove.java @@ -1,6 +1,5 @@ package mage.cards.h; -import mage.MageObject; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -72,17 +71,15 @@ class HedonistsTroveExileEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Player targetPlayer = game.getPlayer(source.getFirstTarget()); - MageObject sourceObject = source.getSourceObject(game); UUID exileId = CardUtil.getExileZoneId(game, source); // save the exileId associated with this specific source game.getState().setValue(source.getSourceId().toString(), exileId); return controller != null && targetPlayer != null - && sourceObject != null && controller.moveCardsToExile( - targetPlayer.getGraveyard().getCards(game), source, game, true, - exileId, sourceObject.getIdName() - ); + targetPlayer.getGraveyard().getCards(game), source, game, true, + exileId, CardUtil.getSourceName(game, source) + ); } } @@ -189,9 +186,9 @@ class HedonistsTroveWatcher extends Watcher { Permanent permanent = source.getSourcePermanentOrLKI(game); return permanent != null && playerMap - .getOrDefault(playerId, emptySet) - .stream() - .noneMatch(mor -> mor.refersTo(permanent, game)); + .getOrDefault(playerId, emptySet) + .stream() + .noneMatch(mor -> mor.refersTo(permanent, game)); } @Override diff --git a/Mage.Sets/src/mage/cards/h/Hypnox.java b/Mage.Sets/src/mage/cards/h/Hypnox.java index 70d7067d384..62c1d3c64c8 100644 --- a/Mage.Sets/src/mage/cards/h/Hypnox.java +++ b/Mage.Sets/src/mage/cards/h/Hypnox.java @@ -16,7 +16,6 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.game.ExileZone; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetOpponent; import mage.util.CardUtil; @@ -77,13 +76,12 @@ class HypnoxExileEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getFirstTarget()); - Permanent permanent = source.getSourcePermanentOrLKI(game); - if (controller == null || player == null || permanent == null) { + if (controller == null || player == null) { return false; } return controller.moveCardsToExile( player.getHand().getCards(game), source, game, true, - CardUtil.getExileZoneId(game, source), permanent.getIdName() + CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) ); } diff --git a/Mage.Sets/src/mage/cards/i/IgnorantBliss.java b/Mage.Sets/src/mage/cards/i/IgnorantBliss.java index 6f22f86c864..97a503a56e4 100644 --- a/Mage.Sets/src/mage/cards/i/IgnorantBliss.java +++ b/Mage.Sets/src/mage/cards/i/IgnorantBliss.java @@ -1,6 +1,5 @@ package mage.cards.i; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; @@ -63,12 +62,11 @@ class IgnorantBlissEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject sourceObject = source.getSourceObject(game); - if (controller == null || sourceObject == null) { + if (controller == null) { return false; } Cards hand = new CardsImpl(controller.getHand()); - controller.moveCardsToExile(hand.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), sourceObject.getIdName()); + controller.moveCardsToExile(hand.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); hand.getCards(game) .stream() .filter(Objects::nonNull) diff --git a/Mage.Sets/src/mage/cards/i/InducedAmnesia.java b/Mage.Sets/src/mage/cards/i/InducedAmnesia.java index 7d857e2fcb0..a5513edd8cf 100644 --- a/Mage.Sets/src/mage/cards/i/InducedAmnesia.java +++ b/Mage.Sets/src/mage/cards/i/InducedAmnesia.java @@ -1,6 +1,5 @@ package mage.cards.i; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility; @@ -66,8 +65,7 @@ class InducedAmnesiaExileEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); - MageObject sourceObject = source.getSourceObject(game); - if (targetPlayer == null || sourceObject == null) { + if (targetPlayer == null) { return false; } int numberOfCards = targetPlayer.getHand().size(); @@ -77,7 +75,7 @@ class InducedAmnesiaExileEffect extends OneShotEffect { Cards cards = new CardsImpl(targetPlayer.getHand()); targetPlayer.moveCardsToExile( cards.getCards(game), source, game, false, - CardUtil.getExileZoneId(game, source), sourceObject.getIdName() + CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) ); cards.getCards(game) .stream() diff --git a/Mage.Sets/src/mage/cards/l/LegionsInitiative.java b/Mage.Sets/src/mage/cards/l/LegionsInitiative.java index 228eecf1a86..59f63017d12 100644 --- a/Mage.Sets/src/mage/cards/l/LegionsInitiative.java +++ b/Mage.Sets/src/mage/cards/l/LegionsInitiative.java @@ -1,6 +1,5 @@ package mage.cards.l; -import mage.MageObject; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -97,8 +96,7 @@ class LegionsInitiativeExileEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - MageObject sourceObject = source.getSourceObject(game); - if (player == null || sourceObject == null) { + if (player == null) { return false; } Cards cards = new CardsImpl(); @@ -108,7 +106,7 @@ class LegionsInitiativeExileEffect extends OneShotEffect { ).stream().filter(Objects::nonNull).forEach(cards::add); return player.moveCardsToExile( cards.getCards(game), source, game, true, - CardUtil.getExileZoneId(game, source), sourceObject.getIdName() + CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) ); } diff --git a/Mage.Sets/src/mage/cards/m/MindFlayerTheShadow.java b/Mage.Sets/src/mage/cards/m/MindFlayerTheShadow.java index ec64dd7dbee..71139a363cf 100644 --- a/Mage.Sets/src/mage/cards/m/MindFlayerTheShadow.java +++ b/Mage.Sets/src/mage/cards/m/MindFlayerTheShadow.java @@ -103,7 +103,7 @@ class MindFlayerTheShadowExileEffect extends OneShotEffect { controller.moveCardsToExile( cards.getCards(game), source, game, false, CardUtil.getExileZoneId(game, source), - CardUtil.getSourceLogName(game, source) + CardUtil.getSourceName(game, source) ); cards.getCards(game).stream().forEach(card -> card.setFaceDown(true, game)); for (Card card : cards.getCards(game)) { diff --git a/Mage.Sets/src/mage/cards/m/Mindreaver.java b/Mage.Sets/src/mage/cards/m/Mindreaver.java index 24eb1383c66..ad7febd5e55 100644 --- a/Mage.Sets/src/mage/cards/m/Mindreaver.java +++ b/Mage.Sets/src/mage/cards/m/Mindreaver.java @@ -1,7 +1,6 @@ package mage.cards.m; import mage.MageInt; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; @@ -112,14 +111,13 @@ class MindreaverExileEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getFirstTarget()); - MageObject mageObject = source.getSourceObject(game); - if (controller == null || player == null || mageObject == null) { + if (controller == null || player == null) { return false; } Cards cards = new CardsImpl(player.getLibrary().getTopCards(game, 3)); return controller.moveCardsToExile( cards.getCards(game), source, game, true, - CardUtil.getExileZoneId(game, source), mageObject.getIdName() + CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source) ); } } diff --git a/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java b/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java index dbad20c9a28..1a742997e97 100644 --- a/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java +++ b/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java @@ -85,7 +85,7 @@ class MnemonicBetrayalExileEffect extends OneShotEffect { .forEach(cards::addAll); controller.moveCardsToExile( cards.getCards(game), source, game, true, - source.getSourceId(), CardUtil.getSourceLogName(game, source) + source.getSourceId(), CardUtil.getSourceName(game, source) ); for (Card card : cards.getCards(game)) { if (card.isLand(game)) { diff --git a/Mage.Sets/src/mage/cards/p/ProwlingGeistcatcher.java b/Mage.Sets/src/mage/cards/p/ProwlingGeistcatcher.java index 18dd75e861b..43359ed16d8 100644 --- a/Mage.Sets/src/mage/cards/p/ProwlingGeistcatcher.java +++ b/Mage.Sets/src/mage/cards/p/ProwlingGeistcatcher.java @@ -79,7 +79,7 @@ class ProwlingGeistcatcherExileEffect extends OneShotEffect { player.moveCardsToExile( card, source, game, true, CardUtil.getExileZoneId(game, source), - CardUtil.getSourceLogName(game, source) + CardUtil.getSourceName(game, source) ); } Permanent exiled = (Permanent) getValue("sacrificedPermanent"); diff --git a/Mage.Sets/src/mage/cards/p/PsychicTheft.java b/Mage.Sets/src/mage/cards/p/PsychicTheft.java index a69ee956d9d..55f39792136 100644 --- a/Mage.Sets/src/mage/cards/p/PsychicTheft.java +++ b/Mage.Sets/src/mage/cards/p/PsychicTheft.java @@ -1,6 +1,5 @@ package mage.cards.p; -import mage.MageObject; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; @@ -71,11 +70,10 @@ class PsychicTheftEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player opponent = game.getPlayer(targetPointer.getFirst(game, source)); - MageObject sourceObject = game.getObject(source.getSourceId()); - if (opponent == null || sourceObject == null) { + if (opponent == null) { return false; } - opponent.revealCards(sourceObject.getName(), opponent.getHand(), game); + opponent.revealCards(CardUtil.getSourceName(game, source), opponent.getHand(), game); Player controller = game.getPlayer(source.getControllerId()); if (controller == null) { return false; @@ -91,8 +89,7 @@ class PsychicTheftEffect extends OneShotEffect { if (chosenCard == null) { return false; } - UUID exileId = CardUtil.getExileZoneId(game, source); - controller.moveCardToExileWithInfo(chosenCard, exileId, sourceObject.getIdName(), source, game, Zone.HAND, true); + controller.moveCardToExileWithInfo(chosenCard, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source), source, game, Zone.HAND, true); CardUtil.makeCardPlayable(game, source, chosenCard, Duration.Custom, false); diff --git a/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java b/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java index e2ec8557fad..0f065a31274 100644 --- a/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java +++ b/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java @@ -14,7 +14,6 @@ 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.util.CardUtil; import mage.watchers.common.AttackedThisTurnWatcher; @@ -120,13 +119,12 @@ class RobberOfTheRichEffect extends OneShotEffect { if (controller == null || damagedPlayer == null) { return false; } - Permanent sourceObject = source.getSourcePermanentIfItStillExists(game); Card card = damagedPlayer.getLibrary().getFromTop(game); - if (card == null || sourceObject == null) { + if (card == null) { return false; } // move card to exile - controller.moveCardsToExile(card, source, game, true, CardUtil.getExileZoneId(game, source), sourceObject.getIdName()); + controller.moveCardsToExile(card, source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); // Add effects only if the card has a spellAbility (e.g. not for lands). if (card.getSpellAbility() != null) { // allow to cast the card diff --git a/Mage.Sets/src/mage/cards/r/RogueClass.java b/Mage.Sets/src/mage/cards/r/RogueClass.java index 78e9c3ff09b..0e54b7999e3 100644 --- a/Mage.Sets/src/mage/cards/r/RogueClass.java +++ b/Mage.Sets/src/mage/cards/r/RogueClass.java @@ -1,6 +1,5 @@ package mage.cards.r; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -103,11 +102,10 @@ class RogueClassExileEffect extends OneShotEffect { if (card == null) { return false; } - MageObject sourceObject = source.getSourcePermanentOrLKI(game); controller.moveCardsToExile( card, source, game, false, CardUtil.getExileZoneId(game, source), - sourceObject != null ? sourceObject.getName() : null + CardUtil.getSourceName(game, source) ); card.setFaceDown(true, game); game.addEffect(new RogueClassLookEffect().setTargetPointer(new FixedTarget(card, game)), source); diff --git a/Mage.Sets/src/mage/cards/w/WallOfMourning.java b/Mage.Sets/src/mage/cards/w/WallOfMourning.java index c97593d0a7c..6f0812e05ec 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfMourning.java +++ b/Mage.Sets/src/mage/cards/w/WallOfMourning.java @@ -85,7 +85,7 @@ class WallOfMourningExileEffect extends OneShotEffect { player.moveCardsToExile( cards, source, game, false, CardUtil.getExileZoneId(game, source), - CardUtil.getSourceLogName(game, source) + CardUtil.getSourceName(game, source) ); for (Card card : cards) { card.setFaceDown(true, game); diff --git a/Mage.Sets/src/mage/cards/w/WizardsSpellbook.java b/Mage.Sets/src/mage/cards/w/WizardsSpellbook.java index 37f9375a765..2d38603e180 100644 --- a/Mage.Sets/src/mage/cards/w/WizardsSpellbook.java +++ b/Mage.Sets/src/mage/cards/w/WizardsSpellbook.java @@ -1,7 +1,6 @@ package mage.cards.w; import mage.ApprovingObject; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.SpellAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -103,8 +102,7 @@ class WizardsSpellbookEffect extends OneShotEffect { return false; } UUID exileId = CardUtil.getExileZoneId(game, source); - MageObject sourceObject = source.getSourcePermanentOrLKI(game); - player.moveCardsToExile(card, source, game, true, exileId, sourceObject != null ? sourceObject.getName() : null); + player.moveCardsToExile(card, source, game, true, exileId, CardUtil.getSourceName(game, source)); if (level < 3) { Card copiedCard = game.copyCard(card, source, source.getControllerId()); if (!player.chooseUse( diff --git a/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java b/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java index 0939c62dc95..e8cda8f583c 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java @@ -89,11 +89,10 @@ public class ExileFromGraveCost extends CostImpl { } Cards cardsToExile = new CardsImpl(); cardsToExile.addAll(exiledCards); - Card sourceCard = game.getCard(source.getSourceId()); controller.moveCardsToExile( cardsToExile.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), - sourceCard.getName() + CardUtil.getSourceName(game, source) ); if (setTargetPointer) { source.getEffects().setTargetPointer(new FixedTargets(cardsToExile, game)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileAllEffect.java index ca1e864d1dd..b6852c2c89c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileAllEffect.java @@ -1,6 +1,5 @@ package mage.abilities.effects.common; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Cards; @@ -45,8 +44,7 @@ public class ExileAllEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject sourceObject = source.getSourceObject(game); - if (controller == null || sourceObject == null) { + if (controller == null) { return false; } Cards cards = new CardsImpl(); @@ -54,7 +52,7 @@ public class ExileAllEffect extends OneShotEffect { filter, source.getControllerId(), source.getSourceId(), game ).stream().forEach(cards::add); if (forSource) { - return controller.moveCardsToExile(cards.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), sourceObject.getName()); + return controller.moveCardsToExile(cards.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); } return controller.moveCards(cards, Zone.EXILED, source, game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java index ef354c75f44..7007493a089 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java @@ -1,7 +1,6 @@ package mage.abilities.effects.common; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; @@ -55,7 +54,6 @@ public class ExileFromZoneTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(targetPointer.getFirst(game, source)); - MageObject mageObject = source.getSourceObject(game); if (player == null) { return false; } @@ -75,7 +73,7 @@ public class ExileFromZoneTargetEffect extends OneShotEffect { target.chooseTarget(Outcome.Exile, player.getId(), source, game); Cards cards = new CardsImpl(target.getTargets()); if (withSource) { - return player.moveCardsToExile(cards.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), mageObject.getName()); + return player.moveCardsToExile(cards.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); } return player.moveCards(cards, Zone.EXILED, source, game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileTopXMayPlayUntilEndOfTurnEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileTopXMayPlayUntilEndOfTurnEffect.java index 1b91cc7ce9a..94866e4b5be 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileTopXMayPlayUntilEndOfTurnEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileTopXMayPlayUntilEndOfTurnEffect.java @@ -58,8 +58,7 @@ public class ExileTopXMayPlayUntilEndOfTurnEffect extends OneShotEffect { if (cards.isEmpty()) { return true; } - Card sourceCard = game.getCard(source.getSourceId()); - controller.moveCardsToExile(cards, source, game, true, CardUtil.getExileZoneId(game, source), sourceCard.getName()); + controller.moveCardsToExile(cards, source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); // remove cards that could not be moved to exile cards.removeIf(card -> !Zone.EXILED.equals(game.getState().getZone(card.getId()))); if (!cards.isEmpty()) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/MistmeadowWitchEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MistmeadowWitchEffect.java index 66e98bc9b78..24bec4ae22e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/MistmeadowWitchEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/MistmeadowWitchEffect.java @@ -1,6 +1,5 @@ package mage.abilities.effects.common; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -29,11 +28,10 @@ public class MistmeadowWitchEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getFirstTarget()); - MageObject sourceObject = source.getSourceObject(game); - if (player == null || permanent == null || sourceObject == null) { + if (player == null || permanent == null) { return false; } - player.moveCardsToExile(permanent, source, game, true, CardUtil.getExileZoneId(game, source), sourceObject.getName()); + player.moveCardsToExile(permanent, source, game, true, CardUtil.getExileZoneId(game, source), CardUtil.getSourceName(game, source)); game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(Zone.BATTLEFIELD, "return the exiled card to the battlefield under its owner's control")), source); return true; } diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java index d9975302666..b44a88e9760 100644 --- a/Mage/src/main/java/mage/util/CardUtil.java +++ b/Mage/src/main/java/mage/util/CardUtil.java @@ -1229,6 +1229,11 @@ public final class CardUtil { return false; } + public static String getSourceName(Game game, Ability source) { + MageObject sourceObject = source.getSourceObject(game); + return sourceObject != null ? sourceObject.getName() : ""; + } + /** * Generates source log name to insert into log messages *