Skip to content

Commit da7dd8c

Browse files
jboehm77ebullient
authored andcommitted
✨ Add handling of feat categories
1 parent eec6fcc commit da7dd8c

3 files changed

Lines changed: 45 additions & 5 deletions

File tree

src/main/java/dev/ebullient/convert/tools/dnd5e/Json2QuteFeat.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.ebullient.convert.tools.dnd5e;
22

3+
import static dev.ebullient.convert.StringUtil.isPresent;
4+
35
import java.util.ArrayList;
46
import java.util.List;
57

@@ -32,13 +34,14 @@ protected Tools5eQuteBase buildQuteResource() {
3234
List<String> text = new ArrayList<>();
3335
appendToText(text, fullEntries, null);
3436

35-
// TODO: update w/ category, additionalSpells
37+
// TODO: update w/ additionalSpells
3638
return new QuteFeat(sources,
3739
linkifier().decoratedName(type, rootNode),
3840
getSourceText(sources),
3941
listPrerequisites(rootNode),
4042
null, // Level coming someday..
4143
SkillOrAbility.getAbilityScoreIncreases(FeatFields.ability.getFrom(rootNode)),
44+
categoryToFull(FeatFields.category.getTextOrEmpty(rootNode)),
4245
images,
4346
String.join("\n", text),
4447
tags);
@@ -116,6 +119,20 @@ JsonNode entryToListItemItem(JsonNode abilityNode) {
116119
.put("name", "Ability Score Increase")
117120
.put("entry", SkillOrAbility.getAbilityScoreIncrease(abilityNode));
118121
}
122+
protected String categoryToFull(String category) {
123+
if (!isPresent(category)) {
124+
return "";
125+
}
126+
return switch (category.toUpperCase()) {
127+
case "EB" -> "Epic Boon Feat";
128+
case "FS" -> "Fighting Style Feat";
129+
case "FS:P" -> "Fighting Style Replacement (Paladin)";
130+
case "FS:R" -> "Fighting Style Replacement (Ranger)";
131+
case "G" -> "General Feat";
132+
case "O" -> "Origin Feat";
133+
default -> category;
134+
};
135+
};
119136

120137
enum FeatFields implements JsonNodeReader {
121138
ability,

src/main/java/dev/ebullient/convert/tools/dnd5e/Json2QuteOptionalFeature.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.ebullient.convert.tools.dnd5e;
22

3+
import static dev.ebullient.convert.StringUtil.isPresent;
4+
35
import java.util.ArrayList;
46
import java.util.List;
57

@@ -18,8 +20,8 @@ public Json2QuteOptionalFeature(Tools5eIndex index, Tools5eIndexType type, JsonN
1820
@Override
1921
protected Tools5eQuteBase buildQuteResource() {
2022
Tags tags = new Tags(getSources());
21-
22-
for (String featureType : Tools5eFields.featureType.getListOfStrings(rootNode, tui())) {
23+
List<String> typeList = Tools5eFields.featureType.getListOfStrings(rootNode, tui());
24+
for (String featureType : typeList) {
2325
tags.add("optional-feature", featureType);
2426
}
2527

@@ -33,8 +35,27 @@ protected Tools5eQuteBase buildQuteResource() {
3335
listPrerequisites(rootNode),
3436
null,
3537
null,
38+
featureTypeToFull(typeList.get(0)),
3639
images,
3740
String.join("\n", text),
3841
tags);
3942
}
43+
44+
protected String featureTypeToFull(String featureType) {
45+
if (!isPresent(featureType)) {
46+
return "";
47+
}
48+
return switch (featureType.toUpperCase()) {
49+
case "AI" -> "Artificer Infusion";
50+
case "AS" -> "Arcane Shot";
51+
case "ED" -> "Elemental Discipline";
52+
case "EI" -> "Eldritch Invocation";
53+
case "FS:B", "FS:F", "FS:P", "FS:R" -> "Fighting Style";
54+
case "MM" -> "Metamagic";
55+
case "MV:B" -> "Battle Master Maneuver";
56+
case "PB" -> "Pact Boon";
57+
case "RN" -> "Rune Knight Rune";
58+
default -> featureType;
59+
};
60+
};
4061
}

src/main/java/dev/ebullient/convert/tools/dnd5e/qute/QuteFeat.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ public class QuteFeat extends Tools5eQuteBase {
1919
public final String level;
2020
/** Formatted text listing other prerequisite conditions (optional) */
2121
public final String prerequisite;
22-
22+
/** Feat category (optional) */
23+
public final String category;
2324
/** Formatted text listing ability score increase (optional) */
2425
public final String ability;
2526

2627
public QuteFeat(Tools5eSources sources, String name, String source,
27-
String prerequisite, String level, String ability,
28+
String prerequisite, String level, String ability, String category,
2829
List<ImageRef> images, String text, Tags tags) {
2930
super(sources, name, source, images, text, tags);
3031
withTemplate("feat2md.txt"); // Feat and OptionalFeature
3132
this.level = level;
3233
this.prerequisite = prerequisite; // optional
34+
this.category = category; // optional
3335
this.ability = ability; // optional
3436
}
3537
}

0 commit comments

Comments
 (0)