diff --git a/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java b/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java index 3d3153f68f9..cb0e9db6c2a 100644 --- a/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java +++ b/Mage.Sets/src/mage/cards/b/BonfireOfTheDamned.java @@ -50,8 +50,7 @@ import mage.target.TargetPlayer; public class BonfireOfTheDamned extends CardImpl { public BonfireOfTheDamned(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{X}{R}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{R}"); // Bonfire of the Damned deals X damage to target player and each creature he or she controls. this.getSpellAbility().addEffect(new BonfireOfTheDamnedEffect()); @@ -77,7 +76,7 @@ class BonfireOfTheDamnedEffect extends OneShotEffect { public BonfireOfTheDamnedEffect() { super(Outcome.Damage); - staticText = "{this} deals X damage to target player and each creature he or she controls"; + staticText = "{this} deals X damage to target player or planeswalker and each creature that player or that planeswalker’s controller controls"; } public BonfireOfTheDamnedEffect(final BonfireOfTheDamnedEffect effect) { @@ -86,12 +85,12 @@ class BonfireOfTheDamnedEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getFirstTarget()); + Player player = game.getPlayerOrPlaneswalkerController(source.getFirstTarget()); if (player != null) { - int damage = source.getManaCostsToPay().getX(); - if (damage > 0) { + int damage = source.getManaCostsToPay().getX(); + if (damage > 0) { player.damage(damage, source.getSourceId(), game, false, true); - for (Permanent perm: game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) { + for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) { perm.damage(damage, source.getSourceId(), game, false, true); } } diff --git a/Mage/src/main/java/mage/game/Game.java b/Mage/src/main/java/mage/game/Game.java index da64fd01a34..1a4ce4a5384 100644 --- a/Mage/src/main/java/mage/game/Game.java +++ b/Mage/src/main/java/mage/game/Game.java @@ -132,6 +132,8 @@ public interface Game extends MageItem, Serializable { Player getPlayer(UUID playerId); + Player getPlayerOrPlaneswalkerController(UUID playerId); + Players getPlayers(); PlayerList getPlayerList(); diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index a4602536931..95fb7b9c1e0 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -306,6 +306,20 @@ public abstract class GameImpl implements Game, Serializable { return state.getPlayer(playerId); } + @Override + public Player getPlayerOrPlaneswalkerController(UUID playerId) { + Player player = getPlayer(playerId); + if (player != null) { + return player; + } + Permanent permanent = getPermanent(playerId); + if (permanent == null) { + return null; + } + player = getPlayer(permanent.getControllerId()); + return player; + } + @Override public MageObject getObject(UUID objectId) { if (objectId == null) { @@ -1565,14 +1579,14 @@ public abstract class GameImpl implements Game, Serializable { } state.addCommandObject(newPlane); informPlayers("You have planeswalked to " + newPlane.getLogName()); - + // Fire off the planeswalked event GameEvent event = new GameEvent(GameEvent.EventType.PLANESWALK, newPlane.getId(), null, newPlane.getId(), 0, true); if (!replaceEvent(event)) { GameEvent ge = new GameEvent(GameEvent.EventType.PLANESWALKED, newPlane.getId(), null, newPlane.getId(), 0, true); fireEvent(ge); } - + return true; }