def test_psychic_blades(self): for lvl in range(1, 5): char = character.Character(classes=["bard"], levels=[lvl]) pb = bard.PsychicBlades(owner=char) self.assertEqual(pb.name, "Psychic Blades (2d6)") for lvl in range(5, 10): char = character.Character(classes=["bard"], levels=[lvl]) pb = bard.PsychicBlades(owner=char) self.assertEqual(pb.name, "Psychic Blades (3d6)") for lvl in range(10, 15): char = character.Character(classes=["bard"], levels=[lvl]) pb = bard.PsychicBlades(owner=char) self.assertEqual(pb.name, "Psychic Blades (5d6)") for lvl in range(15, 20): char = character.Character(classes=["bard"], levels=[lvl]) pb = bard.PsychicBlades(owner=char) self.assertEqual(pb.name, "Psychic Blades (8d6)")
def test_file_created(self): # Check that a file is created once the function is run pdf_name = f'{self.basename}.pdf' # self.assertFalse(os.path.exists(pdf_name), f'{pdf_name} already exists.') char = character.Character(name='Clara') char.saving_throw_proficiencies = ['strength'] make_sheets.create_character_pdf(character=char, basename=self.basename) self.assertTrue(os.path.exists(pdf_name), f'{pdf_name} not created.')
def test_mantle_of_inspiration(self): for lvl in range(1, 5): char = character.Character(classes=["bard"], levels=[lvl]) moi = bard.MantleOfInspiration(owner=char) self.assertEqual(moi.name, "Mantle of Inspiration (5HP)") for lvl in range(5, 10): char = character.Character(classes=["bard"], levels=[lvl]) moi = bard.MantleOfInspiration(owner=char) self.assertEqual(moi.name, "Mantle of Inspiration (8HP)") for lvl in range(10, 15): char = character.Character(classes=["bard"], levels=[lvl]) moi = bard.MantleOfInspiration(owner=char) self.assertEqual(moi.name, "Mantle of Inspiration (11HP)") for lvl in range(15, 20): char = character.Character(classes=["bard"], levels=[lvl]) moi = bard.MantleOfInspiration(owner=char) self.assertEqual(moi.name, "Mantle of Inspiration (14HP)")
def test_song_of_rest(self): # Level 1-8 Bard char = character.Character(classes=["bard"], levels=[2]) sor = bard.SongOfRest(owner=char) self.assertEqual(sor.name, "Song of Rest (1d6)") # Level 9-12 Bard char = character.Character(classes=["bard"], levels=[9]) sor = bard.SongOfRest(owner=char) self.assertEqual(sor.name, "Song of Rest (1d8)") # Level 13-16 Bard char = character.Character(classes=["bard"], levels=[13]) sor = bard.SongOfRest(owner=char) self.assertEqual(sor.name, "Song of Rest (1d10)") # Level 17+ Bard char = character.Character(classes=["bard"], levels=[17]) sor = bard.SongOfRest(owner=char) self.assertEqual(sor.name, "Song of Rest (1d12)")
def test_bardic_inspiration(self): # Level 1-4 Bard char = character.Character(classes=["bard"], levels=[2]) bi = bard.BardicInspiration(owner=char) self.assertEqual(bi.name, "Bardic Inspiration (1d6/LR)") # Level 5-9 Bard char = character.Character(classes=["bard"], levels=[5]) bi = bard.BardicInspiration(owner=char) self.assertEqual(bi.name, "Bardic Inspiration (1d8/SR)") # Level 10-14 Bard char = character.Character(classes=["bard"], levels=[10]) bi = bard.BardicInspiration(owner=char) self.assertEqual(bi.name, "Bardic Inspiration (1d10/SR)") # Level 15+ Bard char = character.Character(classes=["bard"], levels=[15]) bi = bard.BardicInspiration(owner=char) self.assertEqual(bi.name, "Bardic Inspiration (1d12/SR)")
def onStart(self): self.character = character.Character() self.addForm("MAIN", BasicInfoForm, name="Basic Info:") self.addForm("CLASS", CharacterClassForm, name="Select your character's class:") self.addForm("RACE", RaceForm, name="Select your character's race:") self.addForm("ALIGNMENT", AlignmentForm, name="Select your character's alignment:") self.addForm("ABILITIES", AbilityScoreForm, name="Choose ability scores:") self.addForm("BACKGROUND", BackgroundForm, name="Choose background:") self.addForm("SKILLS", SkillForm, name="Choose skill proficiencies") self.addForm("SAVE", SaveForm, name="Save character:")
def new_character(self): char = character.Character( classes=["Monk", "Druid", "Artificer"], levels=[1, 1, 1], subclasses=["way of the open hand", None, None], magic_items=["cloak of protection"], spells=["invisibility"], wild_shapes=["crocodile"], infusions=["boots of the winding path"]) return char
def test_str_to_list(self): char = character.Character(equipment="a, b, c") # Regular string self.assertEqual(stats.str_to_list(char, "equipment"), ["a", "b", "c"]) # Alternate separator char.equipment = "a; b; c" self.assertEqual(stats.str_to_list(char, "equipment", sep=";"), ["a", "b", "c"]) # No attribute self.assertEqual(stats.str_to_list(char, "inventory"), []) # Not a string self.assertEqual(stats.str_to_list(char, "hp_max"), char.hp_max)
def onStart(self): self.character = character.Character() self.character.class_list = [] self.addForm("MAIN", BasicInfoForm, name="Basic Info:", formid='MAIN') self.addForm("RACE", RaceForm, name="Select your character's race:", formid='RACE') self.addForm("CLASS1", CharacterClassForm, name="Select your character's primary class:", formid='CLASS1') self.addForm("BACKGROUND", BackgroundForm, name="Choose background:", formid='BACKGROUND') self.addForm("ALIGNMENT", AlignmentForm, name="Select your character's alignment:", formid='ALIGNMENT') self.addForm("ABILITIES", AbilityScoreForm, name="Choose ability scores:", formid='ABILITIES') self.addForm("SKILLS", SkillForm, name="Choose skill proficiencies", formid='SKILLS') self.addForm("WEAPONS", WeaponForm, name="Choose weapons", formid='WEAPONS') self.addForm("ARMOR", ArmorForm, name="Choose armor", formid='ARMOR') self.addForm("PERSONALITY", PersonalityForm, name="Describe your character", formid='PERSONALITY') self.addForm("SAVE", SaveForm, name="Save character:", formid='SAVE') # Initialized the DoublyLinkedList forms = [ 'MAIN', 'RACE', 'CLASS1', 'BACKGROUND', 'ALIGNMENT', 'ABILITIES', 'SKILLS', 'WEAPONS', 'ARMOR', 'PERSONALITY', 'SAVE' ] for i in range(len(forms) - 1): form = self.getForm(forms[i]) form.add_next(forms[i + 1])
def new_character(self, level=1): return character.Character(classes=['cleric'], levels=[level])