fix(rules): harmless spells on willing targets forgo the save roll - SpellSpec gains a data-driven 'harmless' flag set on the 29 SRD '(harmless)' spells (verified one by one against the KB); a same-side/self target consumes NO save die (SRD saving-throw.md: '(harmless) ... can attempt a saving throw if it desires' + 'Voluntarily Giving up a Saving Throw'), while hostile targets and undead receiving a cure (harmful to them, Will half for undead damage) keep the roll; snapshot spell summaries expose 'harmless'; golden transcript unchanged (no harmless-save cast in it); +8 tests, 3 fixtures re-pinned for the removed die
This commit is contained in:
@@ -127,7 +127,8 @@ def test_area_snapshot_existing_keys_unchanged() -> None:
|
||||
"""Given: a known Fireball snapshot dict
|
||||
When: all keys and values are checked
|
||||
Then: the nine pre-U7a keys are present with unchanged values, and the
|
||||
exact key set is the old nine plus the additive "area" and "cast_time"."""
|
||||
exact key set is the old nine plus the additive "area", "cast_time" and
|
||||
"harmless"."""
|
||||
s = _spell_dict_for(_FIREBALL, "Fireball")
|
||||
assert s["name"] == "Fireball"
|
||||
assert s["level"] == 3
|
||||
@@ -140,6 +141,7 @@ def test_area_snapshot_existing_keys_unchanged() -> None:
|
||||
assert s["summary"] == "area 20ft"
|
||||
assert s["half_on_save"] is True
|
||||
assert s["save_negates"] is False
|
||||
assert s["harmless"] is False
|
||||
assert s["cast_time"] == "standard"
|
||||
assert set(s.keys()) == {
|
||||
"name",
|
||||
@@ -151,6 +153,7 @@ def test_area_snapshot_existing_keys_unchanged() -> None:
|
||||
"summary",
|
||||
"half_on_save",
|
||||
"save_negates",
|
||||
"harmless",
|
||||
"area",
|
||||
"cast_time",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user