forked from External/mage
72 lines
2.1 KiB
Java
72 lines
2.1 KiB
Java
|
|
package mage.abilities.condition.common;
|
|
|
|
import mage.abilities.Ability;
|
|
import mage.abilities.condition.Condition;
|
|
import mage.cards.Card;
|
|
import mage.counters.CounterType;
|
|
import mage.game.Game;
|
|
import mage.game.permanent.Permanent;
|
|
|
|
/**
|
|
*
|
|
* @author Styxo
|
|
*/
|
|
public class TargetHasCounterCondition implements Condition {
|
|
|
|
private final CounterType counterType;
|
|
private int amount = 1;
|
|
private int from = -1;
|
|
private int to;
|
|
|
|
public TargetHasCounterCondition(CounterType type) {
|
|
this.counterType = type;
|
|
}
|
|
|
|
public TargetHasCounterCondition(CounterType type, int amount) {
|
|
this.counterType = type;
|
|
this.amount = amount;
|
|
}
|
|
|
|
public TargetHasCounterCondition(CounterType type, int from, int to) {
|
|
this.counterType = type;
|
|
this.from = from;
|
|
this.to = to;
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings("null")
|
|
public boolean apply(Game game, Ability source) {
|
|
Card card = null;
|
|
Permanent permanent = game.getPermanentOrLKIBattlefield(source.getFirstTarget());
|
|
if (permanent == null) {
|
|
card = game.getCard(source.getFirstTarget());
|
|
if (card == null) {
|
|
return false;
|
|
}
|
|
}
|
|
if (from != -1) { //range compare
|
|
int count;
|
|
if (card != null) {
|
|
count = card.getCounters(game).getCount(counterType);
|
|
} else {
|
|
count = permanent.getCounters(game).getCount(counterType);
|
|
}
|
|
if (to == Integer.MAX_VALUE) {
|
|
return count >= from;
|
|
}
|
|
return count >= from && count <= to;
|
|
} else { // single compare (lte)
|
|
if (card != null) {
|
|
return card.getCounters(game).getCount(counterType) >= amount;
|
|
} else {
|
|
return permanent.getCounters(game).getCount(counterType) >= amount;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "if it has a " + counterType.getName() + " on it";
|
|
}
|
|
}
|