mirror of
https://github.com/magefree/mage.git
synced 2025-12-26 05:22:02 -08:00
* Tragic Arrogance - Fixed a problem that under some circumstances permanents of the wrong player were sacrificed.
This commit is contained in:
parent
9b685cf14b
commit
42a9aed977
2 changed files with 27 additions and 28 deletions
|
|
@ -1,15 +1,14 @@
|
|||
package mage.game.permanent;
|
||||
|
||||
import mage.abilities.keyword.PhasingAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.RangeOfInfluence;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.game.Game;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
import mage.abilities.keyword.PhasingAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.RangeOfInfluence;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.game.Game;
|
||||
|
||||
/**
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
|
|
@ -58,8 +57,8 @@ public class Battlefield implements Serializable {
|
|||
return (int) field.values()
|
||||
.stream()
|
||||
.filter(permanent -> permanent.isControlledBy(controllerId)
|
||||
&& filter.match(permanent, game)
|
||||
&& permanent.isPhasedIn())
|
||||
&& filter.match(permanent, game)
|
||||
&& permanent.isPhasedIn())
|
||||
.count();
|
||||
|
||||
}
|
||||
|
|
@ -69,8 +68,8 @@ public class Battlefield implements Serializable {
|
|||
* influence of the specified player id and that match the supplied filter.
|
||||
*
|
||||
* @param filter
|
||||
* @param sourceId - sourceId of the MageObject the calling effect/ability
|
||||
* belongs to
|
||||
* @param sourceId - sourceId of the MageObject the calling effect/ability
|
||||
* belongs to
|
||||
* @param sourcePlayerId
|
||||
* @param game
|
||||
* @return count
|
||||
|
|
@ -80,15 +79,15 @@ public class Battlefield implements Serializable {
|
|||
return (int) field.values()
|
||||
.stream()
|
||||
.filter(permanent -> filter.match(permanent, sourceId, sourcePlayerId, game)
|
||||
&& permanent.isPhasedIn())
|
||||
&& permanent.isPhasedIn())
|
||||
.count();
|
||||
} else {
|
||||
List<UUID> range = game.getState().getPlayersInRange(sourcePlayerId, game);
|
||||
return (int) field.values()
|
||||
.stream()
|
||||
.filter(permanent -> range.contains(permanent.getControllerId())
|
||||
&& filter.match(permanent, sourceId, sourcePlayerId, game)
|
||||
&& permanent.isPhasedIn()).count();
|
||||
&& filter.match(permanent, sourceId, sourcePlayerId, game)
|
||||
&& permanent.isPhasedIn()).count();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -105,7 +104,7 @@ public class Battlefield implements Serializable {
|
|||
return field.values()
|
||||
.stream()
|
||||
.filter(permanent -> filter.match(permanent, game)
|
||||
&& permanent.isPhasedIn()).count() >= num;
|
||||
&& permanent.isPhasedIn()).count() >= num;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -124,8 +123,8 @@ public class Battlefield implements Serializable {
|
|||
return field.values()
|
||||
.stream()
|
||||
.filter(permanent -> permanent.isControlledBy(controllerId)
|
||||
&& filter.match(permanent, game)
|
||||
&& permanent.isPhasedIn())
|
||||
&& filter.match(permanent, game)
|
||||
&& permanent.isPhasedIn())
|
||||
.count() >= num;
|
||||
|
||||
}
|
||||
|
|
@ -145,14 +144,14 @@ public class Battlefield implements Serializable {
|
|||
if (game.getRangeOfInfluence() == RangeOfInfluence.ALL) {
|
||||
return field.values().stream()
|
||||
.filter(permanent -> filter.match(permanent, null, sourcePlayerId, game)
|
||||
&& permanent.isPhasedIn()).count() >= num;
|
||||
&& permanent.isPhasedIn()).count() >= num;
|
||||
|
||||
} else {
|
||||
List<UUID> range = game.getState().getPlayersInRange(sourcePlayerId, game);
|
||||
return field.values().stream()
|
||||
.filter(permanent -> range.contains(permanent.getControllerId())
|
||||
&& filter.match(permanent, null, sourcePlayerId, game)
|
||||
&& permanent.isPhasedIn())
|
||||
&& filter.match(permanent, null, sourcePlayerId, game)
|
||||
&& permanent.isPhasedIn())
|
||||
.count() >= num;
|
||||
}
|
||||
}
|
||||
|
|
@ -212,7 +211,7 @@ public class Battlefield implements Serializable {
|
|||
return field.values()
|
||||
.stream()
|
||||
.filter(perm -> perm.isPhasedIn()
|
||||
&& perm.isControlledBy(controllerId))
|
||||
&& perm.isControlledBy(controllerId))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
|
@ -233,7 +232,8 @@ public class Battlefield implements Serializable {
|
|||
|
||||
/**
|
||||
* Returns all {@link Permanent} on the battlefield that match the supplied
|
||||
* filter. This method ignores the range of influence. It's ignore controllers preficate
|
||||
* filter. This method ignores the range of influence. It ignores controller
|
||||
* predicates
|
||||
*
|
||||
* @param filter
|
||||
* @param game
|
||||
|
|
@ -300,7 +300,7 @@ public class Battlefield implements Serializable {
|
|||
return field.values()
|
||||
.stream()
|
||||
.filter(perm -> perm.isPhasedIn() && range.contains(perm.getControllerId())
|
||||
&& filter.match(perm, sourceId, sourcePlayerId, game)).collect(Collectors.toList());
|
||||
&& filter.match(perm, sourceId, sourcePlayerId, game)).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -321,7 +321,7 @@ public class Battlefield implements Serializable {
|
|||
return field.values()
|
||||
.stream()
|
||||
.filter(perm -> perm.isPhasedIn()
|
||||
&& range.contains(perm.getControllerId()))
|
||||
&& range.contains(perm.getControllerId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
|
@ -331,8 +331,8 @@ public class Battlefield implements Serializable {
|
|||
return field.values()
|
||||
.stream()
|
||||
.filter(perm -> perm.getAbilities().containsKey(PhasingAbility.getInstance().getId())
|
||||
&& perm.isPhasedIn() &&
|
||||
perm.isControlledBy(controllerId))
|
||||
&& perm.isPhasedIn()
|
||||
&& perm.isControlledBy(controllerId))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue