Card.keywordsToText improve etb/cast keywords WotC likes give many times

This commit is contained in:
Northmoc
2023-04-07 14:49:50 -04:00
parent 6ac832b310
commit b70f68d448

View File

@@ -2257,7 +2257,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|| keyword.equals("Exalted") || keyword.equals("Extort")|| keyword.equals("Flanking") || keyword.equals("Exalted") || keyword.equals("Extort")|| keyword.equals("Flanking")
|| keyword.equals("Horsemanship") || keyword.equals("Infect")|| keyword.equals("Persist") || keyword.equals("Horsemanship") || keyword.equals("Infect")|| keyword.equals("Persist")
|| keyword.equals("Phasing") || keyword.equals("Shadow")|| keyword.equals("Skulk") || keyword.equals("Phasing") || keyword.equals("Shadow")|| keyword.equals("Skulk")
|| keyword.equals("Undying") || keyword.equals("Wither") || keyword.equals("Cascade") || keyword.equals("Undying") || keyword.equals("Wither")
|| keyword.equals("Mentor") || keyword.equals("Training")) { || keyword.equals("Mentor") || keyword.equals("Training")) {
if (sb.length() != 0) { if (sb.length() != 0) {
sb.append("\r\n"); sb.append("\r\n");
@@ -2267,6 +2267,25 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
sb.append(" (").append(inst.getReminderText()).append(")"); sb.append(" (").append(inst.getReminderText()).append(")");
printedKW.add(keyword); printedKW.add(keyword);
} }
} else if (keyword.equals("Cascade")) { // this could become a list for easy keywords that stack
if (printedKW.contains(keyword)) {
continue;
}
if (sb.length() != 0) {
sb.append("\r\n");
}
StringBuilder descStr = new StringBuilder(keyword);
int times = 0;
for (KeywordInterface keyw : keywords) {
String kw = keyw.getOriginal();
if (kw.equals(keyword)) {
descStr.append(times == 0 ? "" : ", " + StringUtils.uncapitalize(keyword));
times++;
}
}
sb.append(descStr).append(" ").append(" (").append(inst.getReminderText()).append(")");
printedKW.add(keyword);
} else if (keyword.startsWith("Ward")) { } else if (keyword.startsWith("Ward")) {
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
final Cost cost = new Cost(k[1], false); final Cost cost = new Cost(k[1], false);
@@ -2308,21 +2327,32 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
sb.append(" ").append(Localizer.getInstance().getMessage("lblSagaFooter")).append(" ").append(TextUtil.toRoman(getFinalChapterNr())).append("."); sb.append(" ").append(Localizer.getInstance().getMessage("lblSagaFooter")).append(" ").append(TextUtil.toRoman(getFinalChapterNr())).append(".");
sb.append(")").append("\r\n\r\n"); sb.append(")").append("\r\n\r\n");
} else if (keyword.startsWith("Backup")) { } else if (keyword.startsWith("Backup")) {
if (printedKW.contains("Backup")) {
continue;
}
boolean plural = false;
StringBuilder descStr = new StringBuilder("Backup ");
int times = 0;
for (KeywordInterface keyw : keywords) {
String kw = keyw.getOriginal();
if (kw.startsWith("Backup")) {
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
String magnitude = k[1]; String magnitude = k[1];
boolean multi = k.length >= 4; if (times == 0 && k[2].endsWith("s")) {
int times = multi ? Integer.parseInt(k[3]) : 1; plural = true;
}
StringBuilder descStr = new StringBuilder("Backup " + magnitude); descStr.append(times == 0 ? magnitude : ", backup " + magnitude);
for (int t = times; t > 1; t--) { times++;
descStr.append(", backup ").append(magnitude); }
} }
sb.append(descStr).append(" ").append(" ("); sb.append(descStr).append(" ").append(" (");
String remStr = inst.getReminderText(); String remStr = inst.getReminderText();
if (k[2].endsWith("s")) { if (plural) {
remStr = remStr.replace("ability", "abilities"); remStr = remStr.replace("ability", "abilities");
} }
sb.append(remStr).append(multi ? " Each backup ability triggers separately." : "").append(")"); sb.append(remStr).append(times > 1 ? " Each backup ability triggers separately." : "").append(")");
printedKW.add("Backup");
} else if (keyword.startsWith("MayEffectFromOpening")) { } else if (keyword.startsWith("MayEffectFromOpening")) {
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
// need to get SpellDescription from Svar // need to get SpellDescription from Svar