package magic.model.target;
import magic.model.MagicAbility;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
public class MagicLoseAbilityTargetPicker extends MagicTargetPicker<MagicPermanent> {
private MagicAbility ability;
public MagicLoseAbilityTargetPicker(final MagicAbility aAbility) {
ability = aAbility;
}
@Override
protected int getTargetScore(final MagicGame game, final MagicPlayer player, final MagicPermanent permanent) {
if (permanent.hasAbility(MagicAbility.CannotAttackOrBlock)) {
return 0;
}
final int power = permanent.getPower();
if ((permanent.hasAbility(ability) && permanent.isBlocking()) &&
(ability != MagicAbility.Flying ||
ability != MagicAbility.Defender ||
ability != MagicAbility.Trample ||
ability != MagicAbility.Haste)
) {
return 120 + power;
}
if ((permanent.hasAbility(ability) && permanent.isBlocked()) &&
(ability != MagicAbility.Flying ||
ability != MagicAbility.Defender ||
ability != MagicAbility.Haste)
) {
return 120 + power;
}
if (permanent.hasAbility(ability) && permanent.isAttacking() &&
(ability != MagicAbility.Defender ||
ability != MagicAbility.Haste)) {
return 120 + power;
}
if (permanent.hasAbility(ability)) {
return 100 + power;
}
return power;
}
}
// Could group abilities together 'Evasion', 'Attack Dependant', 'Blocking Dependant', 'Blocked Dependant'