package magic.model.target;
import magic.model.MagicAbility;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentList;
import magic.model.MagicPlayer;
public class MagicTrampleTargetPicker extends MagicTargetPicker<MagicPermanent> {
private static final MagicTrampleTargetPicker INSTANCE=new MagicTrampleTargetPicker();
private MagicTrampleTargetPicker() {}
public static MagicTrampleTargetPicker create() {
return INSTANCE;
}
@Override
protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) {
final int power = permanent.getPower();
if (!permanent.hasAbility(MagicAbility.Trample)&&
!permanent.hasAbility(MagicAbility.Defender)&&
!permanent.hasAbility(MagicAbility.CannotAttackOrBlock)) {
if (permanent.isBlocked()) {
int blockersToughness = 0;
final MagicPermanentList blockers = permanent.getBlockingCreatures();
for (final MagicPermanent blocker : blockers) {
blockersToughness += blocker.getToughness();
}
if (blockersToughness < power ||
(permanent.hasAbility(MagicAbility.Deathtouch) && power > blockers.size())) {
return 10+power;
}
}
return 1+power;
}
return 0;
}
}