diff --git a/Mage/src/mage/abilities/condition/common/ControlsPermanentCondition.java b/Mage/src/mage/abilities/condition/common/ControlsPermanentCondition.java index 38a70496e4..b3121f82b5 100644 --- a/Mage/src/mage/abilities/condition/common/ControlsPermanentCondition.java +++ b/Mage/src/mage/abilities/condition/common/ControlsPermanentCondition.java @@ -30,6 +30,7 @@ package mage.abilities.condition.common; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.filter.FilterPermanent; +import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; /** @@ -95,15 +96,18 @@ public class ControlsPermanentCondition implements Condition { public boolean apply(Game game, Ability source) { boolean conditionApplies = false; + FilterPermanent localFilter = filter.copy(); + localFilter.add(new ControllerIdPredicate(source.getControllerId())); + switch ( this.type ) { case FEWER_THAN: - conditionApplies = game.getBattlefield().countControlled(filter, source.getSourceId(), source.getControllerId(), game) < this.count; + conditionApplies = game.getBattlefield().count(localFilter, source.getSourceId(), source.getControllerId(), game) < this.count; break; case MORE_THAN: - conditionApplies = game.getBattlefield().countControlled(filter, source.getSourceId(), source.getControllerId(), game) > this.count; + conditionApplies = game.getBattlefield().count(localFilter, source.getSourceId(), source.getControllerId(), game) > this.count; break; case EQUAL_TO: - conditionApplies = game.getBattlefield().countControlled(filter, source.getSourceId(), source.getControllerId(), game) == this.count; + conditionApplies = game.getBattlefield().count(localFilter, source.getSourceId(), source.getControllerId(), game) == this.count; break; } diff --git a/Mage/src/mage/game/permanent/Battlefield.java b/Mage/src/mage/game/permanent/Battlefield.java index 97ce8c7645..2d149ab4af 100644 --- a/Mage/src/mage/game/permanent/Battlefield.java +++ b/Mage/src/mage/game/permanent/Battlefield.java @@ -115,39 +115,6 @@ public class Battlefield implements Serializable { } return count; } - - /** - * Returns a count of all {@link Permanent} that are within the range of influence of the specified player id - * and is controlled by specified player ,and that match the supplied filter. - * - * @param filter - * @param sourceId - * @param sourcePlayerId - * @param game - * @return count - */ - public int countControlled(FilterPermanent filter, UUID sourceId, UUID sourcePlayerId, Game game) { - int count = 0; - if (game.getRangeOfInfluence() == RangeOfInfluence.ALL) { - for (Permanent permanent: field.values()) { - if (filter.match(permanent, sourceId, sourcePlayerId, game) - && permanent.getControllerId().equals(sourcePlayerId)) { - count++; - } - } - } - else { - Set range = game.getPlayer(sourcePlayerId).getInRange(); - for (Permanent permanent: field.values()) { - if (range.contains(permanent.getControllerId()) - && filter.match(permanent, sourceId, sourcePlayerId, game) - && permanent.getControllerId().equals(sourcePlayerId)) { - count++; - } - } - } - return count; - } /** * Returns true if the battlefield contains at least 1 {@link Permanent}