foul-magics/Mage/src/mage/abilities/keyword/IntimidateAbility.java

63 lines
No EOL
1.7 KiB
Java

package mage.abilities.keyword;
import mage.Constants;
import mage.abilities.Ability;
import mage.abilities.EvasionAbility;
import mage.abilities.effects.RestrictionEffect;
import mage.game.Game;
import mage.game.permanent.Permanent;
public class IntimidateAbility extends EvasionAbility<IntimidateAbility> {
private static final IntimidateAbility fInstance = new IntimidateAbility();
public static IntimidateAbility getInstance() {
return fInstance;
}
private IntimidateAbility() {
this.addEffect(new IntimidateEffect());
}
@Override
public String getRule() {
return "Intimidate";
}
@Override
public IntimidateAbility copy() {
return fInstance;
}
}
class IntimidateEffect extends RestrictionEffect<IntimidateEffect> {
public IntimidateEffect() {
super(Constants.Duration.WhileOnBattlefield);
}
public IntimidateEffect(final IntimidateEffect effect) {
super(effect);
}
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
if (permanent.getAbilities().containsKey(IntimidateAbility.getInstance().getId())) {
return true;
}
return false;
}
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Game game) {
boolean result = false;
if (blocker.getCardType().contains(Constants.CardType.ARTIFACT) && (blocker.getCardType().contains(Constants.CardType.CREATURE)))
result = true;
if (attacker.getColor().shares(blocker.getColor()))
result = true;
return result;
}
@Override
public IntimidateEffect copy() {
return new IntimidateEffect(this);
}
}