From 406b4d004d83873f10961d41ed9c70f4b917fb5b Mon Sep 17 00:00:00 2001 From: matsavage Date: Tue, 4 May 2021 22:31:03 +0100 Subject: [PATCH] spells also ordered by level --- dungeonsheets/character.py | 4 ++-- dungeonsheets/forms/spellbook_template.tex | 9 +++------ dungeonsheets/make_sheets.py | 2 +- dungeonsheets/spells/spells.py | 5 ++++- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dungeonsheets/character.py b/dungeonsheets/character.py index 2c89f4f..3ecb6c9 100644 --- a/dungeonsheets/character.py +++ b/dungeonsheets/character.py @@ -587,7 +587,7 @@ class Character: spells |= set(c.spells_known) | set(c.spells_prepared) if self.race is not None: spells |= set(self.race.spells_known) | set(self.race.spells_prepared) - return sorted(tuple(spells), key=(lambda x: (x.name))) + return sorted(tuple(spells), key=(lambda x: (x.level, x.name))) @property def spells_prepared(self): @@ -598,7 +598,7 @@ class Character: spells |= set(c.spells_prepared) if self.race is not None: spells |= set(self.race.spells_prepared) - return sorted(tuple(spells), key=(lambda x: (x.name))) + return sorted(tuple(spells), key=(lambda x: (x.level, x.name))) def set_attrs(self, **attrs): """ diff --git a/dungeonsheets/forms/spellbook_template.tex b/dungeonsheets/forms/spellbook_template.tex index 3504017..1bcf7b1 100644 --- a/dungeonsheets/forms/spellbook_template.tex +++ b/dungeonsheets/forms/spellbook_template.tex @@ -3,15 +3,14 @@ [% for spl in character.spells %] [% if use_dnd_decorations %] - \DndSpellHeader + \DndSpellHeader {[[ spl.name ]]} {[% if spl.level > 0 %][[ ordinals[spl.level] ]]-level [[ spl.magic_school ]][% else %][[ spl.magic_school ]] Cantrip[% endif %] [% if spl.ritual %](\textit{ritual})[% endif %]} {[[ spl.casting_time ]]} {[[ spl.casting_range ]]} {[[ spl.component_string ]]} {[% if spl.ritual %]Concentration, up to [% endif %][[ spl.duration ]]} - - [% else %] + [% else %] \section*{[[ spl.name ]]} [% if spl.level > 0 %] % \textit{[[ spl.magic_school ]] Level [[ spl.level ]]} % @@ -24,8 +23,7 @@ (\textit{ritual})% [% elif spl.concentration %]% (\textit{concentration})% - [% endif %]% - + [% endif %]% %% \noindent \begin{description} \setlength{\itemsep}{\zerosep}% @@ -36,7 +34,6 @@ \item [Components:] [[ spl.component_string ]] \end{description} % \vspace{\zerosep} - [% endif %] [[ spl.__doc__ | rst_to_latex(top_heading_level=1) ]] diff --git a/dungeonsheets/make_sheets.py b/dungeonsheets/make_sheets.py index ed4df37..5b534f2 100755 --- a/dungeonsheets/make_sheets.py +++ b/dungeonsheets/make_sheets.py @@ -216,7 +216,7 @@ def make_sheet( ) sheets.append(spell_base + ".pdf") # end of PDF gen - + if character.is_spellcaster: tex.append(create_spellbook_tex(character, use_dnd_decorations=fancy_decorations)) diff --git a/dungeonsheets/spells/spells.py b/dungeonsheets/spells/spells.py index 3820bfc..6d9aedd 100644 --- a/dungeonsheets/spells/spells.py +++ b/dungeonsheets/spells/spells.py @@ -63,7 +63,7 @@ class Spell: return s def __repr__(self): - return '"{:s}"'.format(self.name) + return f"{self.level} {self.name}" def __eq__(self, other): return (self.name == other.name) and (self.level == other.level) @@ -71,6 +71,9 @@ class Spell: def __hash__(self): return 0 + def __lt__(self, other): + return (self.level, self.name) < (other.level, other.name) + @property def component_string(self): s = f'{", ".join(self.components)}'