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"); value += addValue(14, "paired");
} }
if (!c.getEncodedCards().isEmpty()) { if (!c.hasEncodedCard()) {
value += addValue(24, "encoded"); value += addValue(24, "encoded");
} }

View File

@@ -1333,7 +1333,7 @@ public class AttachAi extends SpellAbilityAi {
CardCollection preferred = CardLists.filter(list, new Predicate<Card>() { CardCollection preferred = CardLists.filter(list, new Predicate<Card>() {
@Override @Override
public boolean apply(final Card card) { public boolean apply(final Card card) {
return card.getAttachedCards().isEmpty(); return !card.hasCardAttachments();
} }
}); });
return preferred.isEmpty() ? Aggregates.random(list) : Aggregates.random(preferred); 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); 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")) { if (sq[0].contains("TotalOppPoisonCounters")) {
return doXMath(player.getOpponentsTotalPoisonCounters(), expr, c, ctb); return doXMath(player.getOpponentsTotalPoisonCounters(), expr, c, ctb);
} }

View File

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

View File

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

View File

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