More draft matters

This commit is contained in:
Chris H
2024-05-20 20:23:37 -04:00
parent 4310fecc8b
commit 799fd4cc51
13 changed files with 212 additions and 79 deletions

View File

@@ -9,7 +9,10 @@ import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostShard;
import forge.game.*;
import forge.game.CardTraitBase;
import forge.game.EvenOdd;
import forge.game.Game;
import forge.game.GameEntity;
import forge.game.ability.AbilityKey;
import forge.game.ability.AbilityUtils;
import forge.game.card.CardPredicates.Presets;
@@ -2094,6 +2097,16 @@ public class CardProperty {
}
}
return false;
} else if (property.equals("NotedColor")) {
String colors = sourceController.getDraftNotes().get(spellAbility.getHostCard().getName());
if (colors == null) {
return false;
}
return (colors.contains("white") && card.getColor().hasWhite()) ||
(colors.contains("blue") && card.getColor().hasBlue()) ||
(colors.contains("black") && card.getColor().hasBlack()) ||
(colors.contains("red") && card.getColor().hasRed()) ||
(colors.contains("green") && card.getColor().hasGreen());
} else if (property.startsWith("Triggered")) {
if (spellAbility instanceof SpellAbility) {
final String key = property.substring(9);

View File

@@ -17,13 +17,7 @@
*/
package forge.game.spellability;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.Lists;
import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.card.mana.ManaAtom;
@@ -48,9 +42,13 @@ import forge.game.replacement.ReplacementType;
import forge.game.trigger.Trigger;
import forge.game.trigger.TriggerHandler;
import forge.game.trigger.TriggerType;
import forge.game.zone.ZoneType;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.util.TextUtil;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -524,6 +522,9 @@ public class AbilityManaPart implements java.io.Serializable {
return getComboColors(sa);
}
String produced = this.getOrigProduced();
if (produced.contains("NotedColor")) {
produced = produced.replace("NotedColor", sa.getActivatingPlayer().getDraftNotes().get(""));
}
if (produced.contains("Chosen")) {
produced = produced.replace("Chosen", this.getChosenColor(sa));
}
@@ -663,6 +664,23 @@ public class AbilityManaPart implements java.io.Serializable {
if (origProduced.contains("Chosen")) {
origProduced = origProduced.replace("Chosen", getChosenColor(sa));
}
if (origProduced.contains("NotedColors")) {
String colors = sa.getActivatingPlayer().getDraftNotes().get(sa.getHostCard().getName());
if (colors == null) {
return "";
}
// Colors here is an comma separated color list, potentially with duplicates
// We need to remove duplicates and convert to single letters
StringBuilder sb = new StringBuilder();
for (String color : colors.split(",")) {
String shortColor = MagicColor.toShortString(color);
if (sb.indexOf(shortColor) == -1) {
sb.append(shortColor).append(" ");
}
}
origProduced = origProduced.replace("NotedColors", sb.toString().trim());
}
if (!origProduced.contains("ColorIdentity")) {
return TextUtil.fastReplace(origProduced, "Combo ", "");
}