Merge branch 'hybrid' into 'master'

ManaEffect: fix for adding from cost with generic half

See merge request core-developers/forge!6289
This commit is contained in:
Michael Kamensky
2022-02-23 14:52:44 +00:00
6 changed files with 23 additions and 16 deletions

View File

@@ -217,7 +217,7 @@ public class CreatureEvaluator implements Function<Card, Integer> {
value += addValue(14, "paired");
}
if (!c.getEncodedCards().isEmpty()) {
if (!c.hasEncodedCard()) {
value += addValue(24, "encoded");
}

View File

@@ -1333,7 +1333,7 @@ public class AttachAi extends SpellAbilityAi {
CardCollection preferred = CardLists.filter(list, new Predicate<Card>() {
@Override
public boolean apply(final Card card) {
return card.getAttachedCards().isEmpty();
return !card.hasCardAttachments();
}
});
return preferred.isEmpty() ? Aggregates.random(list) : Aggregates.random(preferred);

View File

@@ -2387,9 +2387,6 @@ public class AbilityUtils {
return doXMath(player.getCounters(CounterType.getType(counterType)), expr, c, ctb);
}
if (sq[0].contains("YourPoisonCounters")) {
return doXMath(player.getPoisonCounters(), expr, c, ctb);
}
if (sq[0].contains("TotalOppPoisonCounters")) {
return doXMath(player.getOpponentsTotalPoisonCounters(), expr, c, ctb);
}

View File

@@ -149,21 +149,31 @@ public class ManaEffect extends SpellAbilityEffect {
StringBuilder sb = new StringBuilder();
int generic = enchanted.getManaCost().getGenericCost();
if (generic > 0)
sb.append(generic);
for (ManaCostShard s : enchanted.getManaCost()) {
ColorSet cs = ColorSet.fromMask(s.getColorMask());
byte chosenColor;
if (cs.isColorless())
continue;
sb.append(' ');
if (cs.isMonoColor())
sb.append(MagicColor.toShortString(s.getColorMask()));
if (s.isOr2Generic()) { // CR 106.8
chosenColor = p.getController().chooseColorAllowColorless(Localizer.getInstance().getMessage("lblChooseSingleColorFromTarget", s.toString()), card, cs);
if (chosenColor == MagicColor.COLORLESS) {
generic += 2;
continue;
}
}
else if (cs.isMonoColor())
chosenColor = s.getColorMask();
else /* (cs.isMulticolor()) */ {
byte chosenColor = p.getController().chooseColor(Localizer.getInstance().getMessage("lblChooseSingleColorFromTarget", s.toString()), sa, cs);
chosenColor = p.getController().chooseColor(Localizer.getInstance().getMessage("lblChooseSingleColorFromTarget", s.toString()), sa, cs);
}
sb.append(MagicColor.toShortString(chosenColor));
sb.append(' ');
}
if (generic > 0) {
sb.append(generic);
}
abMana.setExpressChoice(sb.toString().trim());
} else if (type.equals("LastNotedType")) {
final StringBuilder sb = new StringBuilder();

View File

@@ -4819,7 +4819,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
}
setPhasedOut(!phasedOut);
final Combat combat = getGame().getPhaseHandler().getCombat();
final Combat combat = getGame().getCombat();
if (combat != null && phasedOut) {
combat.saveLKI(this);
combat.removeFromCombat(this);

View File

@@ -141,7 +141,7 @@ public class CostPartMana extends CostPart {
// back from the brink
return sa.getPaidList(CostExile.HashLKIListKey).get(0).getManaCost();
}
if (isEnchantedCreatureCost() && sa.getHostCard().getEnchantingCard() != null) {
if (isEnchantedCreatureCost() && sa.getHostCard().isEnchantingCard()) {
return sa.getHostCard().getEnchantingCard().getManaCost();
}
if (isCostPayAnyNumberOfTimes) {