From ddca31311fc3f9dfca3ce081052253ef7f8e8ac6 Mon Sep 17 00:00:00 2001 From: Erin Schnabel Date: Wed, 25 Mar 2026 06:26:11 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Render=20psionic=20focus=20and?= =?UTF-8?q?=20modes=20in=20template;=20resolves=20#839?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The psionic2md.txt template was missing focus and modes rendering, causing all mode descriptions to be silently dropped in generated output. - Add Psionic Focus and Modes sections to psionic2md.txt - Fix focus field to use replaceTextFrom (handles {@...} markup, returns empty string when absent so template conditional works correctly) - Add Giddy sample psionic to homebrew test sources Co-Authored-By: Claude Sonnet 4.6 --- .../convert/tools/dnd5e/Json2QutePsionicTalent.java | 2 +- src/main/resources/templates/tools5e/psionic2md.txt | 13 +++++++++++-- src/test/resources/5e/sources-homebrew.json | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/ebullient/convert/tools/dnd5e/Json2QutePsionicTalent.java b/src/main/java/dev/ebullient/convert/tools/dnd5e/Json2QutePsionicTalent.java index b63141908..80d07ea6a 100644 --- a/src/main/java/dev/ebullient/convert/tools/dnd5e/Json2QutePsionicTalent.java +++ b/src/main/java/dev/ebullient/convert/tools/dnd5e/Json2QutePsionicTalent.java @@ -31,7 +31,7 @@ protected Tools5eQuteBase buildQuteResource() { getName(), getSourceText(sources), getPsionicTypeOrder(), - PsionicFields.focus.getTextOrDefault(rootNode, "\u2014"), + PsionicFields.focus.replaceTextFrom(rootNode, this), getPsionicModes(), String.join("\n", text), tags); diff --git a/src/main/resources/templates/tools5e/psionic2md.txt b/src/main/resources/templates/tools5e/psionic2md.txt index aaa6f3a8c..6b9c62d69 100644 --- a/src/main/resources/templates/tools5e/psionic2md.txt +++ b/src/main/resources/templates/tools5e/psionic2md.txt @@ -13,10 +13,19 @@ aliases: {/each} --- # {resource.name} -*{resource.typeOrder}* +*{resource.typeOrder}* {#if resource.text } {resource.text} -{/if}{#if resource.source } +{/if}{#if resource.focus } + +**Psionic Focus.** {resource.focus} +{/if}{#if resource.modes} + +## Modes +{#for mode in resource.modes} + +{#if mode.name }***{mode.name}.*** {/if}{mode.desc} +{/for}{/if}{#if resource.source } *Source: {resource.source}* {/if} diff --git a/src/test/resources/5e/sources-homebrew.json b/src/test/resources/5e/sources-homebrew.json index 4347e82d0..11aff3f4c 100644 --- a/src/test/resources/5e/sources-homebrew.json +++ b/src/test/resources/5e/sources-homebrew.json @@ -40,6 +40,7 @@ "sources/5e-homebrew/creature/MCDM Productions; Flee, Mortals!.json", "sources/5e-homebrew/creature/Nerzugal Role-Playing; Nerzugal's Extended Bestiary.json", "sources/5e-homebrew/deity/Frog God Games; The Lost Lands.json", + "sources/5e-homebrew/psionic/Sample - Giddy; Black Lily Techniques.json", "sources/5e-homebrew/race/Middle Finger of Vecna; Archon.json", "sources/5e-homebrew/spell/LaserLlama; LaserLlama's Compendium of Spells.json", "sources/5e-homebrew/subclass/LaserLlama; Druid Circles.json"