From b03a61d8abce813a0deac88066ada40c3a7a73fc Mon Sep 17 00:00:00 2001 From: ctan Date: Wed, 16 Sep 2026 19:04:14 +0200 Subject: [PATCH] fix(spells): correct SRD levels, saves, schools, ranges and SR flags (11 spells) Verified field-by-field against the SRD knowledge base (pathfinder-1e-rules, spells/): - levels: abundant_ammunition 0->1, comprehend_languages 0->1, deja_vu 0->1, create_water 1->0, enhance_water 2->1 - saves: blindness_deafness will->fort, enhance_water none->fort - spell resistance: summon_monster_i/ii declared false (SRD RM: no) - schools: arcane_mark ->universal, color_spray ->illusion, dancing_lights ->evocation, deja_vu ->enchantment, enhance_water ->transmutation, abundant_ammunition ->conjuration - ranges: deja_vu personal->medium, dancing_lights close->medium, enhance_water personal->touch, create_water medium->close Registry pins in test_spell_registry_batch1.py updated to match; descriptions that stated the old values reworded consistently. --- data/spells/abundant_ammunition.json | 6 +++--- data/spells/arcane_mark.json | 2 +- data/spells/blindness_deafness.json | 4 ++-- data/spells/color_spray.json | 2 +- data/spells/comprehend_languages.json | 4 ++-- data/spells/create_water.json | 4 ++-- data/spells/dancing_lights.json | 4 ++-- data/spells/deja_vu.json | 8 ++++---- data/spells/enhance_water.json | 8 ++++---- data/spells/summon_monster_i.json | 1 + data/spells/summon_monster_ii.json | 1 + tests/test_spell_registry_batch1.py | 18 +++++++++--------- 12 files changed, 32 insertions(+), 30 deletions(-) diff --git a/data/spells/abundant_ammunition.json b/data/spells/abundant_ammunition.json index ca6b8b0..cc415af 100644 --- a/data/spells/abundant_ammunition.json +++ b/data/spells/abundant_ammunition.json @@ -1,12 +1,12 @@ { "name": "Abundant Ammunition", - "level": 0, - "school": "transmutation", + "level": 1, + "school": "conjuration", "range": "close", "save": "none", "base_dc": 10, "cast_time": "standard", "spell_resistance": false, "effects": [], - "description": "A cantrip that conjures duplicate ammunition: attacks with the affected ammunition do not expend it. No combat-mechanical effect in the engine (ammunition is not tracked)." + "description": "A 1st-level spell that conjures duplicate ammunition: attacks with the affected ammunition do not expend it. No combat-mechanical effect in the engine (ammunition is not tracked)." } diff --git a/data/spells/arcane_mark.json b/data/spells/arcane_mark.json index 0757b0a..51afc42 100644 --- a/data/spells/arcane_mark.json +++ b/data/spells/arcane_mark.json @@ -1,7 +1,7 @@ { "name": "Arcane Mark", "level": 0, - "school": "divination", + "school": "universal", "range": "touch", "save": "none", "base_dc": 10, diff --git a/data/spells/blindness_deafness.json b/data/spells/blindness_deafness.json index a92a272..76fe84a 100644 --- a/data/spells/blindness_deafness.json +++ b/data/spells/blindness_deafness.json @@ -3,7 +3,7 @@ "level": 2, "school": "necromancy", "range": "medium", - "save": "will", + "save": "fort", "base_dc": 10, "cast_time": "standard", "effects": [ @@ -14,5 +14,5 @@ "save_negates": true } ], - "description": "The target becomes blind or deaf (modeled as blinded) until removed by a caster of higher level. Permanent duration approximated as 100 rounds. Will negates." + "description": "The target becomes blind or deaf (modeled as blinded) until removed by a caster of higher level. Permanent duration approximated as 100 rounds. Fortitude negates." } diff --git a/data/spells/color_spray.json b/data/spells/color_spray.json index 9946a57..1640f1e 100644 --- a/data/spells/color_spray.json +++ b/data/spells/color_spray.json @@ -1,7 +1,7 @@ { "name": "Color Spray", "level": 1, - "school": "enchantment", + "school": "illusion", "range": "close", "save": "will", "base_dc": 10, diff --git a/data/spells/comprehend_languages.json b/data/spells/comprehend_languages.json index 9ee2751..274eeb7 100644 --- a/data/spells/comprehend_languages.json +++ b/data/spells/comprehend_languages.json @@ -1,11 +1,11 @@ { "name": "Comprehend Languages", - "level": 0, + "level": 1, "school": "divination", "range": "personal", "save": "none", "base_dc": 10, "cast_time": "standard", "effects": [], - "description": "A cantrip that lets you understand the meaning of any spoken or written language you encounter for 1 min/level. Utility spell, no combat effect." + "description": "A 1st-level spell that lets you understand the meaning of any spoken or written language you encounter for 1 min/level. Utility spell, no combat effect." } diff --git a/data/spells/create_water.json b/data/spells/create_water.json index bba3441..2caf38c 100644 --- a/data/spells/create_water.json +++ b/data/spells/create_water.json @@ -1,8 +1,8 @@ { "name": "Create Water", - "level": 1, + "level": 0, "school": "conjuration", - "range": "medium", + "range": "close", "save": "none", "base_dc": 10, "cast_time": "standard", diff --git a/data/spells/dancing_lights.json b/data/spells/dancing_lights.json index de8781f..f14f2ca 100644 --- a/data/spells/dancing_lights.json +++ b/data/spells/dancing_lights.json @@ -1,8 +1,8 @@ { "name": "Dancing Lights", "level": 0, - "school": "conjuration", - "range": "close", + "school": "evocation", + "range": "medium", "save": "none", "base_dc": 10, "cast_time": "standard", diff --git a/data/spells/deja_vu.json b/data/spells/deja_vu.json index dff79b2..4b74e78 100644 --- a/data/spells/deja_vu.json +++ b/data/spells/deja_vu.json @@ -1,11 +1,11 @@ { "name": "Deja Vu", - "level": 0, - "school": "divination", - "range": "personal", + "level": 1, + "school": "enchantment", + "range": "medium", "save": "none", "base_dc": 10, "cast_time": "standard", "effects": [], - "description": "A cantrip that lets you reroll one attack roll, saving throw, or skill check made in the past round (once per casting). Not modeled by the engine's action flow, so it carries no mechanical effect." + "description": "A 1st-level spell that lets you reroll one attack roll, saving throw, or skill check made in the past round (once per casting). Not modeled by the engine's action flow, so it carries no mechanical effect." } diff --git a/data/spells/enhance_water.json b/data/spells/enhance_water.json index 18bfea0..eb44740 100644 --- a/data/spells/enhance_water.json +++ b/data/spells/enhance_water.json @@ -1,9 +1,9 @@ { "name": "Enhance Water", - "level": 2, - "school": "abjuration", - "range": "personal", - "save": "none", + "level": 1, + "school": "transmutation", + "range": "touch", + "save": "fort", "base_dc": 10, "cast_time": "one_round", "effects": [], diff --git a/data/spells/summon_monster_i.json b/data/spells/summon_monster_i.json index 0bb761f..2c6cda0 100644 --- a/data/spells/summon_monster_i.json +++ b/data/spells/summon_monster_i.json @@ -6,6 +6,7 @@ "save": "none", "base_dc": 10, "cast_time": "one_round", + "spell_resistance": false, "effects": [ { "type": "summon", diff --git a/data/spells/summon_monster_ii.json b/data/spells/summon_monster_ii.json index ff56e8c..aef9f6c 100644 --- a/data/spells/summon_monster_ii.json +++ b/data/spells/summon_monster_ii.json @@ -6,6 +6,7 @@ "save": "none", "base_dc": 10, "cast_time": "one_round", + "spell_resistance": false, "effects": [ { "type": "summon", diff --git a/tests/test_spell_registry_batch1.py b/tests/test_spell_registry_batch1.py index c1403ac..2f8a771 100644 --- a/tests/test_spell_registry_batch1.py +++ b/tests/test_spell_registry_batch1.py @@ -33,27 +33,27 @@ _ORIGINAL_COUNT = 11 # name -> (file stem, level, school, range, save) _BATCH1: dict[str, tuple[str, int, str, str, str]] = { - "Abundant Ammunition": ("abundant_ammunition", 0, "transmutation", "close", "none"), + "Abundant Ammunition": ("abundant_ammunition", 1, "conjuration", "close", "none"), "Acid Splash": ("acid_splash", 0, "conjuration", "close", "none"), "Aid": ("aid", 2, "enchantment", "touch", "none"), "Air Bubble": ("air_bubble", 1, "conjuration", "personal", "none"), "Alarm": ("alarm", 1, "abjuration", "medium", "none"), - "Arcane Mark": ("arcane_mark", 0, "divination", "touch", "none"), + "Arcane Mark": ("arcane_mark", 0, "universal", "touch", "none"), "Bane": ("bane", 1, "enchantment", "medium", "will"), "Bear's Endurance": ("bears_endurance", 2, "transmutation", "touch", "will"), "Bladed Dash": ("bladed_dash", 2, "transmutation", "personal", "none"), "Bleed": ("bleed", 0, "necromancy", "close", "will"), "Bless": ("bless", 1, "enchantment", "medium", "none"), - "Blindness/Deafness": ("blindness_deafness", 2, "necromancy", "medium", "will"), + "Blindness/Deafness": ("blindness_deafness", 2, "necromancy", "medium", "fort"), "Charm Person": ("charm_person", 1, "enchantment", "medium", "will"), - "Color Spray": ("color_spray", 1, "enchantment", "close", "will"), - "Comprehend Languages": ("comprehend_languages", 0, "divination", "personal", "none"), + "Color Spray": ("color_spray", 1, "illusion", "close", "will"), + "Comprehend Languages": ("comprehend_languages", 1, "divination", "personal", "none"), "Create Alcool": ("create_alcool", 0, "conjuration", "close", "none"), - "Create Water": ("create_water", 1, "conjuration", "medium", "none"), - "Dancing Lights": ("dancing_lights", 0, "conjuration", "close", "none"), + "Create Water": ("create_water", 0, "conjuration", "close", "none"), + "Dancing Lights": ("dancing_lights", 0, "evocation", "medium", "none"), "Darkness": ("darkness", 2, "evocation", "touch", "none"), "Daze": ("daze", 0, "enchantment", "close", "will"), - "Deja Vu": ("deja_vu", 0, "divination", "personal", "none"), + "Deja Vu": ("deja_vu", 1, "enchantment", "medium", "none"), "Delay Disease": ("delay_disease", 3, "abjuration", "touch", "fort"), "Delay Poison": ("delay_poison", 2, "abjuration", "touch", "fort"), "Detect Fiendish Presence": ("detect_fiendish_presence", 0, "divination", "close", "none"), @@ -64,7 +64,7 @@ _BATCH1: dict[str, tuple[str, int, str, str, str]] = { "Doom": ("doom", 1, "necromancy", "medium", "will"), "Drunkard's Breath": ("drunkards_breath", 1, "abjuration", "personal", "none"), "Endure Elements": ("endure_elements", 1, "abjuration", "personal", "none"), - "Enhance Water": ("enhance_water", 2, "abjuration", "personal", "none"), + "Enhance Water": ("enhance_water", 1, "transmutation", "touch", "fort"), } _EFFECT_TYPES = (