Replace flavor names into oracle text.

This commit is contained in:
Jetz
2025-11-12 09:28:51 -05:00
parent 32d732bbb1
commit 22a9b173a5
2 changed files with 12 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
package forge.card; package forge.card;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.util.Lang;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.*; import java.util.*;
@@ -185,7 +186,17 @@ final class CardFace implements ICardFace, Cloneable {
} }
void assignMissingFieldsToVariant(CardFace variant) { void assignMissingFieldsToVariant(CardFace variant) {
if(variant.oracleText == null) variant.oracleText = this.oracleText; if(variant.oracleText == null) {
if(variant.flavorName != null && this.oracleText != null) {
Lang lang = Lang.getInstance();
//Rudimentary name replacement. Can't do pronouns, ability words, or flavored keywords. Need to define variant text manually for that.
String flavoredText = this.oracleText.replaceAll("(?<=\\b|\\\\n)" + this.name + "\\b", variant.flavorName);
flavoredText = flavoredText.replaceAll("(?<=\\b|\\\\n)" + lang.getNickName(this.name) + "\\b", lang.getNickName(variant.flavorName));
variant.oracleText = flavoredText;
}
else
variant.oracleText = this.oracleText;
}
if(variant.manaCost == null) variant.manaCost = this.manaCost; if(variant.manaCost == null) variant.manaCost = this.manaCost;
if(variant.color == null) variant.color = ColorSet.fromManaCost(variant.manaCost); if(variant.color == null) variant.color = ColorSet.fromManaCost(variant.manaCost);

View File

@@ -504,16 +504,11 @@ public final class CardRules implements ICardCharacteristics {
CardFace variantMain = ((CardFace) mainPart).getOrCreateFunctionalVariant(variantName); CardFace variantMain = ((CardFace) mainPart).getOrCreateFunctionalVariant(variantName);
variantMain.setFlavorName(nameParts[0]); variantMain.setFlavorName(nameParts[0]);
//Rudimentary name replacement. Can't do nicknames, pronouns, ability words, or flavored keywords. Need to define variants manually for that.
if(mainPart.getOracleText().contains(mainPart.getName()))
variantMain.setOracleText(mainPart.getOracleText().replace(mainPart.getName(), nameParts[0]));
((CardFace) mainPart).assignMissingFieldsToVariant(variantMain); ((CardFace) mainPart).assignMissingFieldsToVariant(variantMain);
if(otherPart != null) { if(otherPart != null) {
CardFace variantOther = ((CardFace) otherPart).getOrCreateFunctionalVariant(variantName); CardFace variantOther = ((CardFace) otherPart).getOrCreateFunctionalVariant(variantName);
variantOther.setFlavorName(nameParts[1]); variantOther.setFlavorName(nameParts[1]);
if(otherPart.getOracleText().contains(otherPart.getName()))
variantMain.setOracleText(otherPart.getOracleText().replace(otherPart.getName(), nameParts[1]));
((CardFace) otherPart).assignMissingFieldsToVariant(variantOther); ((CardFace) otherPart).assignMissingFieldsToVariant(variantOther);
} }