From 2e8f24edb3db2624291960b02e08a21887652c24 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Wed, 19 Apr 2023 18:40:04 +0400 Subject: [PATCH] Fixed protector NPE on empty opponents --- .../java/mage/game/permanent/PermanentImpl.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index 912dc2b1dfc..c135add92f1 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -1677,20 +1677,22 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { @Override public void chooseProtector(Game game, Ability source) { Set opponents = game.getOpponents(this.getControllerId()); - UUID protectorId; + Player newProtector; if (opponents.size() > 1) { TargetPlayer target = new TargetPlayer(new FilterOpponent("protector for " + getName())); target.setNotTarget(true); target.setRequired(true); game.getPlayer(getControllerId()).choose(Outcome.Neutral, target, source, game); - protectorId = target.getFirstTarget(); + newProtector = game.getPlayer(target.getFirstTarget()); } else { - protectorId = RandomUtil.randomFromCollection(opponents); + newProtector = game.getPlayer(opponents.iterator().next()); + } + if (newProtector != null) { + String protectorName = newProtector.getLogName(); + game.informPlayers(protectorName + " has been chosen to protect " + this.getLogName()); + this.addInfo("protector", "Protected by " + protectorName, game); + this.setProtectorId(newProtector.getId()); } - String protectorName = game.getPlayer(protectorId).getLogName(); - game.informPlayers(protectorName + " has been chosen to protect " + this.getLogName()); - this.addInfo("protector", "Protected by " + protectorName, game); - this.setProtectorId(protectorId); } @Override