Some fixes to prevent null pointer exceptions.

This commit is contained in:
LevelX2 2016-09-24 03:36:18 +02:00
parent ad2f5a4d46
commit 1ccd2a1b04
3 changed files with 20 additions and 20 deletions

View file

@ -45,7 +45,6 @@ import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.players.Player; import mage.players.Player;
import mage.players.PlayerList;
/** /**
* *
@ -103,31 +102,30 @@ class ZursWeirdingReplacementEffect extends ReplacementEffectImpl {
Card card = player.getLibrary().getFromTop(game); Card card = player.getLibrary().getFromTop(game);
if (card != null) { if (card != null) {
// reveals it instead // reveals it instead
player.revealCards(sourceObject.getIdName() + " next draw of " + player.getName() + " (" + game.getTurnNum()+"|"+game.getPhase().getType() +")", new CardsImpl(card), game); player.revealCards(sourceObject.getIdName() + " next draw of " + player.getName() + " (" + game.getTurnNum() + "|" + game.getPhase().getType() + ")", new CardsImpl(card), game);
// Then any other player may pay 2 life. If a player does, put that card into its owner's graveyard // Then any other player may pay 2 life. If a player does, put that card into its owner's graveyard
PlayerList playerList = game.getPlayerList().copy(); String message = "Pay 2 life to put " + card.getLogName() + " into graveyard?";
playerList.setCurrent(player.getId()); for (UUID playerId : game.getState().getPlayersInRange(player.getId(), game)) {
Player currentPlayer = playerList.getNext(game); if (playerId.equals(player.getId())) {
String message = new StringBuilder("Pay 2 life to put ").append(card.getLogName()).append(" into graveyard?").toString(); continue;
while (!currentPlayer.getId().equals(player.getId())) { }
if (currentPlayer.canPayLifeCost() && Player otherPlayer = game.getPlayer(playerId);
currentPlayer.getLife() >= 2 && if (otherPlayer.canPayLifeCost()
currentPlayer.chooseUse(Outcome.Benefit, message, source, game)) { && otherPlayer.getLife() >= 2
currentPlayer.loseLife(2, game); && otherPlayer.chooseUse(Outcome.Benefit, message, source, game)) {
otherPlayer.loseLife(2, game);
player.moveCards(card, Zone.GRAVEYARD, source, game); player.moveCards(card, Zone.GRAVEYARD, source, game);
// game.getState().getRevealed().reset(); break;
}
}
}
return true; return true;
} }
currentPlayer = playerList.getNext(game);
}
// game.getState().getRevealed().reset();
}
}
return false; return false;
} }
@Override @Override
public boolean checksEventType(GameEvent event, Game game) { public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DRAW_CARD; return event.getType() == GameEvent.EventType.DRAW_CARD;

View file

@ -93,7 +93,7 @@ class DeadlockTrapCantActivateEffect extends RestrictionEffect {
@Override @Override
public boolean applies(Permanent permanent, Ability source, Game game) { public boolean applies(Permanent permanent, Ability source, Game game) {
return getTargetPointer().getFirst(game, source).equals(permanent.getId()); return permanent.getId().equals(getTargetPointer().getFirst(game, source));
} }
@Override @Override

View file

@ -100,9 +100,11 @@ class ForkInTheRoadEffect extends OneShotEffect {
if (target.getTargets().size() > 0) { if (target.getTargets().size() > 0) {
Cards revealed = new CardsImpl(); Cards revealed = new CardsImpl();
for (UUID cardId : target.getTargets()) { for (UUID cardId : target.getTargets()) {
Card card = controller.getLibrary().getCard(cardId, game); Card card = game.getCard(cardId);
if (card != null) {
revealed.add(card); revealed.add(card);
} }
}
controller.revealCards(sourceObject.getIdName(), revealed, game); controller.revealCards(sourceObject.getIdName(), revealed, game);
if (target.getTargets().size() > 0) { if (target.getTargets().size() > 0) {
TargetCard target2 = new TargetCard(Zone.LIBRARY, filter); TargetCard target2 = new TargetCard(Zone.LIBRARY, filter);