Fix replacing "Green" in Omnath by another color.

This commit is contained in:
elcnesh
2014-08-12 19:49:48 +00:00
parent 566b1955f9
commit 331016cef7

View File

@@ -110,9 +110,16 @@ public class ManaPool implements Iterable<Mana> {
return false; return false;
} }
if (owner.hasKeyword("Green mana doesn't empty from your mana pool as steps and phases end.") && int safeMana = 0;
getAmountOfColor(MagicColor.GREEN) == totalMana()) { for (final byte c : MagicColor.WUBRG) {
return false; //won't lose floating mana if all mana is green and green mana isn't going to be emptied final String captName = StringUtils.capitalize(MagicColor.toLongString(c));
if (owner.hasKeyword(captName + " mana doesn't empty from your mana pool as steps and phases end.")) {
safeMana += getAmountOfColor(c);
}
}
if (totalMana() == safeMana) {
return false; //won't lose floating mana if all mana is of colors that aren't going to be emptied
} }
return true; return true;
@@ -134,12 +141,16 @@ public class ManaPool implements Iterable<Mana> {
return cleared; return cleared;
} }
boolean keepGreenMana = isEndOfPhase && owner.hasKeyword("Green mana doesn't empty from your mana pool as steps and phases end."); final boolean convertToColorless = owner.hasKeyword("Convert unused mana to Colorless");
boolean convertToColorless = owner.hasKeyword("Convert unused mana to Colorless");
List<Byte> keys = Lists.newArrayList(floatingMana.keySet()); final List<Byte> keys = Lists.newArrayList(floatingMana.keySet());
if (keepGreenMana) { if (isEndOfPhase) {
keys.remove(Byte.valueOf(MagicColor.GREEN)); for (final Byte c : Lists.newArrayList(keys)) {
final String captName = StringUtils.capitalize(MagicColor.toLongString(c));
if (owner.hasKeyword(captName + " mana doesn't empty from your mana pool as steps and phases end.")) {
keys.remove(c);
}
}
} }
if (convertToColorless) { if (convertToColorless) {
keys.remove(Byte.valueOf(MagicColor.COLORLESS)); keys.remove(Byte.valueOf(MagicColor.COLORLESS));