From b9928730725c2be29f2d2a9209ae0ed82ca4b450 Mon Sep 17 00:00:00 2001 From: David Kruger Date: Tue, 20 May 2025 21:15:48 -0700 Subject: [PATCH] Support multiple ability checks --- dnd5etools/db/spells.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dnd5etools/db/spells.py b/dnd5etools/db/spells.py index 73c66fb..f7d7ad0 100644 --- a/dnd5etools/db/spells.py +++ b/dnd5etools/db/spells.py @@ -18,7 +18,7 @@ class Spell(typing.NamedTuple): name: str source: str description: str - ability_check: typing.Optional[Ability] + ability_check: typing.Set[Ability] # remaining: 'affectsCreatureType', 'alias', 'areaTags', 'basicRules2024', 'components', 'conditionImmune', 'conditionInflict', 'damageImmune', 'damageInflict', 'damageResist', 'damageVulnerable', 'duration', 'entriesHigherLevel', 'hasFluffImages', 'level', 'meta', 'miscTags', 'page', 'range', 'savingThrow', 'scalingLevelDice', 'school', 'spellAttack', 'srd52', 'time' @classmethod @@ -41,12 +41,10 @@ class Spell(typing.NamedTuple): ) @classmethod - def ability_check_from_json(cls, json_data) -> typing.Optional[Ability]: + def ability_check_from_json(cls, json_data) -> typing.Set[Ability]: if "abilityCheck" not in json_data: - return None - elif len(json_data["abilityCheck"]) > 1: - raise Exception(f"Unexpected abilityCheck length") - return Ability(json_data["abilityCheck"][0]) + return set() + return {Ability(c) for c in json_data["abilityCheck"]} @classmethod def description_from_json(cls, json_data) -> str: