Update IceCave.java

I used getOpponents, but that required changing input from source.getControllerId() to spell.getControllerId() so that it would get the opponents of the player who played the spell, rather than the opponents of the player who controls Ice Cave. I also implemented a null check for the spellController as I made it.
This commit is contained in:
ThomasLerner 2017-04-09 18:23:34 -04:00 committed by GitHub
parent d510651bac
commit 57b50857cc

View file

@ -94,19 +94,23 @@ class IceCaveEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
Spell spell = (Spell) game.getStack().getStackObject(targetPointer.getFirst(game, source));
if(sourcePermanent != null && spell != null) {
if(sourcePermanent != null && spell != null && controller != null) {
Player spellController = game.getPlayer(spell.getControllerId());
Cost cost = new ManaCostsImpl(spell.getSpellAbility().getManaCosts().getText());
for (UUID playerId : game.getState().getPlayerList(source.getControllerId())) {
Player player = game.getPlayer(playerId);
if(player.getId() != spell.getControllerId()) {
cost.clearPaid();
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
&& player.chooseUse(outcome, "Pay " + cost.getText() + " to counter " + spell.getIdName() + '?', source, game)) {
if (cost.pay(source, game, source.getSourceId(), playerId, false, null)) {
game.informPlayers(player.getLogName() + " pays" + cost.getText() + " to counter " + spell.getIdName() + '.');
game.getStack().counter(spell.getId(), source.getSourceId(), game);
if (spellController != null) {
for (UUID playerId : game.getOpponents(spell.getControllerId())) {
Player player = game.getPlayer(playerId);
if (player != null) {
cost.clearPaid();
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
&& player.chooseUse(outcome, "Pay " + cost.getText() + " to counter " + spell.getIdName() + '?', source, game)) {
if (cost.pay(source, game, source.getSourceId(), playerId, false, null)) {
game.informPlayers(player.getLogName() + " pays" + cost.getText() + " to counter " + spell.getIdName() + '.');
game.getStack().counter(spell.getId(), source.getSourceId(), game);
return true;
}
}
}
}
}
}
}