diff --git a/src/magic/model/target/MagicEquipTargetPicker.java b/src/magic/model/target/MagicEquipTargetPicker.java index 59dfd72b13..9e43ec7966 100644 --- a/src/magic/model/target/MagicEquipTargetPicker.java +++ b/src/magic/model/target/MagicEquipTargetPicker.java @@ -5,29 +5,39 @@ import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; import magic.model.MagicPowerToughness; +import magic.model.mstatic.MagicStatic; public class MagicEquipTargetPicker extends MagicTargetPicker { - private final MagicCardDefinition cdef; + private final long givenAbilityFlags; + private final MagicPowerToughness givenPT; public MagicEquipTargetPicker(final MagicCardDefinition cardDefinition) { - cdef = cardDefinition; + // determine given ability and given pt of equipment from list of static abilities + long ability = 0; + MagicPowerToughness pt = new MagicPowerToughness(0,0); + + for (final MagicStatic mstatic : cardDefinition.getStatics()) { + ability = mstatic.getAbilityFlags(MagicGame.getInstance(), MagicPermanent.NONE, ability); + mstatic.getPowerToughness(MagicGame.getInstance(), MagicPermanent.NONE, pt); + } + + givenAbilityFlags = ability; + givenPT = pt; } @Override protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) { - // Penalty when allready equipped. - int penalty=permanent.isEquipped()?3:0; - - // Penalty when there is an overlap between abilities. - final long abilityFlags = cdef.getAbilityFlags(); - if ((permanent.getAllAbilityFlags(game)&abilityFlags)!=0) { + // penalty when already equipped + int penalty = permanent.isEquipped() ? 3 : 0; + + // penalty when there is an overlap between abilities. + if ((permanent.getAllAbilityFlags(game) & givenAbilityFlags) != 0) { penalty+=6; } final MagicPowerToughness pt = permanent.getPowerToughness(game); - final MagicPowerToughness equipPT = cdef.genPowerToughness(game,player); - final boolean defensive = equipPT.toughness() > equipPT.power(); + final boolean defensive = givenPT.toughness() > givenPT.power(); // Defensive if (defensive) {