package mage.abilities.effects.common.combat;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.RestrictionEffect;
import mage.constants.Duration;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
/**
* @author dustinconrad
*/
public class CantBlockCreaturesSourceEffect extends RestrictionEffect {
private final FilterCreaturePermanent filter;
public CantBlockCreaturesSourceEffect(FilterCreaturePermanent filter) {
this(filter, Duration.WhileOnBattlefield);
}
public CantBlockCreaturesSourceEffect(FilterCreaturePermanent filter, Duration duration) {
super(duration);
this.filter = filter;
staticText = "{this} can't block " + filter.getMessage();
}
public CantBlockCreaturesSourceEffect(CantBlockCreaturesSourceEffect effect) {
super(effect);
this.filter = effect.filter;
}
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
return permanent.getId().equals(source.getSourceId());
}
@Override
public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
return !filter.match(attacker, source.getSourceId(), source.getControllerId(), game);
}
@Override
public ContinuousEffect copy() {
return new CantBlockCreaturesSourceEffect(this);
}
}