diff --git a/internal/plugin/dnd_spells_data.go b/internal/plugin/dnd_spells_data.go index 3e70b19..dad7205 100644 --- a/internal/plugin/dnd_spells_data.go +++ b/internal/plugin/dnd_spells_data.go @@ -520,5 +520,55 @@ func buildSpellList() []SpellDefinition { Classes: []DnDClass{ClassDruid}, Effect: EffectUtility, CastTime: CastAction, Concentration: true, AOE: true, Description: "A shimmering bubble travels with you. Living things bounce off it; the undead saunter through."}, + + // ── 2026-05 voice pass: SRD-only utility/control entries whose Open5e + // prose read as bland source text. Mechanics unchanged; Description + // rewritten to the charm_person voice (player-facing, verb-led, a + // little wry). Upcast strings on these are never displayed at runtime + // — see TestSpellDescriptionsAreJargonFree's header note — so they're + // elided here. + {ID: "animal_friendship", Name: "Animal Friendship", Level: 1, School: "enchantment", + Classes: []DnDClass{ClassRanger, ClassDruid, ClassBard}, Effect: EffectControl, CastTime: CastAction, + SaveStat: "WIS", + Description: "Crouch low, soft eyes, soft voice — convince a beast you're not lunch. They might even follow you home."}, + {ID: "color_spray", Name: "Color Spray", Level: 1, School: "illusion", + Classes: []DnDClass{ClassMage, ClassSorcerer}, Effect: EffectUtility, CastTime: CastAction, AOE: true, + Description: "A burst of clashing colour rolls over a knot of foes. They blink, sway, and lose their next breath of the fight."}, + {ID: "animal_messenger", Name: "Animal Messenger", Level: 2, School: "enchantment", + Classes: []DnDClass{ClassRanger, ClassDruid, ClassBard}, Effect: EffectUtility, CastTime: CastRitual, + Description: "Tap a passing finch on the shoulder. It carries your note where you point and doesn't come back complaining."}, + {ID: "blindnessdeafness", Name: "Blindness/Deafness", Level: 2, School: "necromancy", + Classes: []DnDClass{ClassMage, ClassCleric, ClassBard, ClassSorcerer, ClassWarlock}, Effect: EffectUtility, CastTime: CastAction, + Description: "Curse a foe's eyes shut or stop their ears with stillness. They flail; you don't."}, + {ID: "enhance_ability", Name: "Enhance Ability", Level: 2, School: "transmutation", + Classes: []DnDClass{ClassCleric, ClassDruid, ClassBard, ClassSorcerer}, Effect: EffectUtility, CastTime: CastAction, + Concentration: true, + Description: "Lay a hand on an ally and lend them a borrowed knack — strength, grace, or nerve — for the next ugly thing they walk into."}, + {ID: "magic_circle", Name: "Magic Circle", Level: 3, School: "abjuration", + Classes: []DnDClass{ClassMage, ClassCleric, ClassWarlock, ClassPaladin}, Effect: EffectUtility, CastTime: CastAction, + MaterialCost: 100, + Description: "Scratch a glowing ring on the ground; certain unpleasant things can't cross it in or out. Bring chalk."}, + {ID: "confusion", Name: "Confusion", Level: 4, School: "enchantment", + Classes: []DnDClass{ClassMage, ClassCleric, ClassDruid, ClassBard, ClassSorcerer}, Effect: EffectControl, CastTime: CastAction, + Concentration: true, SaveStat: "WIS", AOE: true, + Description: "Scramble a small crowd's heads. They wander, swing the wrong way, mutter at the sky. Embarrassing for them."}, + {ID: "private_sanctum", Name: "Private Sanctum", Level: 4, School: "abjuration", + Classes: []DnDClass{ClassMage}, Effect: EffectUtility, CastTime: CastAction, + Description: "Seal a room against scrying, teleports, and uninvited ghosts. Ideal for a nap that no one interrupts."}, + {ID: "conjure_elemental", Name: "Conjure Elemental", Level: 5, School: "conjuration", + Classes: []DnDClass{ClassMage, ClassDruid}, Effect: EffectUtility, CastTime: CastAction, + Concentration: true, AOE: true, + Description: "Call up a slab of living element — fire, water, earth, or air — and ask it, very politely, to stomp something."}, + {ID: "creation", Name: "Creation", Level: 5, School: "illusion", + Classes: []DnDClass{ClassMage, ClassSorcerer}, Effect: EffectUtility, CastTime: CastAction, AOE: true, + Description: "Pull a shadow into the shape you want — rope, plank, sack, what have you. It works. Looks shifty. Won't last."}, + {ID: "modify_memory", Name: "Modify Memory", Level: 5, School: "enchantment", + Classes: []DnDClass{ClassMage, ClassCleric, ClassBard}, Effect: EffectUtility, CastTime: CastAction, + Concentration: true, + Description: "Reach into a creature's recent past and re-fold it. They remember a version of the evening that suits you better."}, + {ID: "planar_binding", Name: "Planar Binding", Level: 5, School: "abjuration", + Classes: []DnDClass{ClassMage, ClassCleric, ClassDruid, ClassBard}, Effect: EffectUtility, CastTime: CastAction, + MaterialCost: 1000, + Description: "Pin a summoned thing down with a long, paperwork-heavy oath. It serves until the contract lapses."}, } }