package magic.model.target; import magic.model.MagicAbility; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; public class MagicShadowTargetPicker extends MagicTargetPicker<MagicPermanent> { private static final MagicShadowTargetPicker INSTANCE = new MagicShadowTargetPicker(); private MagicShadowTargetPicker() { } @Override protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) { // no score for ability overlap, not being able to deal combat damage, // being blocked or blocking if (permanent.hasAbility(MagicAbility.Shadow) || permanent.hasAbility(MagicAbility.CannotAttackOrBlock) || permanent.isBlocked() || permanent.isBlocking()) { return 0; } // attacking if (game.getTurnPlayer() == player) { // no score for not being able to attack or being unblockable if (!permanent.canAttack() || !permanent.canBeBlocked(player.getOpponent())) { return 0; } } // blocking else { // no score for not being able to block // or opponent has no shadow creatures if (!permanent.canBlock() || !player.getOpponent().controlsPermanent(MagicAbility.Shadow)) { return 0; } } return 10 + permanent.getPower(); } public static MagicShadowTargetPicker create() { return INSTANCE; } }