forked from External/mage
69 lines
1.6 KiB
Java
69 lines
1.6 KiB
Java
package mage.abilities.keyword;
|
|
|
|
import mage.abilities.Ability;
|
|
import mage.abilities.EvasionAbility;
|
|
import mage.abilities.MageSingleton;
|
|
import mage.abilities.effects.RestrictionEffect;
|
|
import mage.constants.Duration;
|
|
import mage.game.Game;
|
|
import mage.game.permanent.Permanent;
|
|
|
|
import java.io.ObjectStreamException;
|
|
|
|
/**
|
|
* @author Loki
|
|
*/
|
|
public class FearAbility extends EvasionAbility implements MageSingleton {
|
|
|
|
private static final FearAbility instance = new FearAbility();
|
|
|
|
private Object readResolve() throws ObjectStreamException {
|
|
return instance;
|
|
}
|
|
|
|
public static FearAbility getInstance() {
|
|
return instance;
|
|
}
|
|
|
|
private FearAbility() {
|
|
this.addEffect(new FearEffect());
|
|
}
|
|
|
|
@Override
|
|
public String getRule() {
|
|
return "fear";
|
|
}
|
|
|
|
@Override
|
|
public FearAbility copy() {
|
|
return instance;
|
|
}
|
|
|
|
}
|
|
|
|
class FearEffect extends RestrictionEffect implements MageSingleton {
|
|
|
|
public FearEffect() {
|
|
super(Duration.EndOfGame);
|
|
}
|
|
|
|
public FearEffect(final FearEffect effect) {
|
|
super(effect);
|
|
}
|
|
|
|
@Override
|
|
public boolean applies(Permanent permanent, Ability source, Game game) {
|
|
return permanent.getAbilities().containsKey(FearAbility.getInstance().getId());
|
|
}
|
|
|
|
@Override
|
|
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) {
|
|
return blocker.isArtifact() || blocker.getColor(game).isBlack();
|
|
}
|
|
|
|
@Override
|
|
public FearEffect copy() {
|
|
return new FearEffect(this);
|
|
}
|
|
|
|
}
|