package magic.model.target;
import magic.model.MagicAbility;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import magic.model.MagicPowerToughness;
public class MagicNoCombatTargetPicker extends MagicTargetPicker<MagicPermanent> {
private final boolean noAttacking;
private final boolean noBlocking;
private final boolean forever;
public MagicNoCombatTargetPicker(final boolean noAttacking,final boolean noBlocking,final boolean forever) {
this.noAttacking=noAttacking;
this.noBlocking=noBlocking;
this.forever=forever;
}
@Override
protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) {
// For each turn.
if (forever) {
final MagicPowerToughness pt=permanent.getPowerToughness();
int score=pt.power()*2+pt.toughness();
if (!permanent.hasAbility(MagicAbility.CannotAttackOrBlock)) {
if (noAttacking&&!permanent.hasAbility(MagicAbility.Defender)) {
score+=100;
}
if (noBlocking&&!permanent.hasAbility(MagicAbility.CannotBlock)) {
score+=50;
}
}
return score;
}
// Until end of turn.
final boolean turn=game.getTurnPlayer()==player;
if (turn) {
if (!noBlocking||!permanent.canBlock()) {
return 0;
}
} else if (!noAttacking||!permanent.canAttack()) {
return 0;
}
final MagicPowerToughness pt=permanent.getPowerToughness();
return pt.power()*2+pt.toughness()-permanent.getDamage()+1;
}
}