add artificer to create-character

This commit is contained in:
Robert Kubosz
2020-05-12 03:15:19 +02:00
parent c9a0d4d6d7
commit cf27b596ef
4 changed files with 520 additions and 143 deletions
+3 -2
View File
@@ -1,7 +1,8 @@
__all__ = ('CharClass', 'Barbarian', 'Bard', 'Cleric', 'Druid', 'Fighter',
__all__ = ('CharClass', 'Artificer', 'Barbarian', 'Bard', 'Cleric', 'Druid', 'Fighter',
'Monk', 'Paladin', 'Ranger', 'Rogue', 'Sorceror', 'Warlock',
'Wizard', 'RevisedRanger', 'available_classes')
from dungeonsheets.classes.artificer import Artificer
from dungeonsheets.classes.barbarian import Barbarian
from dungeonsheets.classes.bard import Bard
from dungeonsheets.classes.classes import CharClass
@@ -16,5 +17,5 @@ from dungeonsheets.classes.sorceror import Sorceror
from dungeonsheets.classes.warlock import Warlock
from dungeonsheets.classes.wizard import Wizard
available_classes = [Barbarian, Bard, Cleric, Druid, Fighter, Monk, Paladin,
available_classes = [Artificer, Barbarian, Bard, Cleric, Druid, Fighter, Monk, Paladin,
Ranger, Rogue, Sorceror, Warlock, Wizard, RevisedRanger]
+69 -13
View File
@@ -1,40 +1,97 @@
from collections import defaultdict
from dungeonsheets import exceptions, features, monsters, weapons
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
from dungeonsheets.stats import findattr
# Eberron Rising from the Last War
class Alchemist(SubClass):
"""An Alchemist is an expert at combining reagents to produce mystical
effects. Alchemists use their creations to give life and to leech it away.
Alchemy is the oldest of ar­tificer traditions, and its versatility has
Alchemy is the oldest of artificer traditions, and its versatility has
long been valued during times of war and peace.
"""
name = "Alchemist"
features_by_level = defaultdict(list)
features_by_level[3] = [features.ToolProficiency]
features_by_level[3] = [features.AlchemistToolProficiency,
features.AlchemistSpells,
features.ExperimentalElixir]
features_by_level[5] = [features.AlchemicalSavant]
features_by_level[9] = [features.RestorativeReagents]
features_by_level[15] = [features.ChemicalMastery]
class Artillerist(SubClass):
"""An Artillerist specializes in using magic to hurl energy, projectiles,
and explosions on a battlefield. This destructive power was valued by all
the armies of the Last War. Now that the war is over, some members of this
specialization have sought to build a more peaceful world by using their
powers to fight the resurgence of strife in Khorvaire. The gnome artificer
Vi, an unlikely yet key member of House Cannith's warforged project, has
been especially vocal about making things right: "It's about time we fixed
things instead of blowing them all to hell."
"""
name = "Artillerist"
features_by_level = defaultdict(list)
features_by_level[3] = [features.ArtilleristSpells,
features.ArtilleristToolProficiency,
features.EldritchCannon]
features_by_level[5] = [features.ArcaneFirearm]
features_by_level[9] = [features.ExplosiveCannon]
features_by_level[15] = [features.FortifiedPosition]
class BattleSmith(SubClass):
"""Armies require protection, and someone has to put things back together
if defenses fail. A combination of protector and medic, a Battle Smith is
an expert at defending others and repairing both material and personnel.
To aid in their work, Battle Smiths are usually accompanied by a steel
defender, a protective compan­ion of their own creation. Many soldiers tell
stories of nearly dying before being saved by a Battle Smith and a steel
defender.
Battle Smiths played a key role in House Cannith's work on battle
constructs and the original warforged, and after the Last War, these
artificers led efforts to aid those who were injured in the war's horrific
battles.
"""
name = "Battle Smith"
features_by_level = defaultdict(list)
features_by_level[3] = [features.BattleSmithSpells,
features.BattleSmithToolProficiency,
features.BattleReady,
features.SteelDefender]
features_by_level[5] = [features.ExtraAttackBattleSmith]
features_by_level[9] = [features.ArcaneJolt]
features_by_level[15] = [features.ImprovedDefender]
class Artificer(CharClass):
name = "Artificer"
hit_dice_faces = 8
subclass_select_level = 3
subclasses_available = (Alchemist, Artillerist, BattleSmith)
saving_throw_proficiencies = ('intelligence', 'constitution')
primary_abilities = ('intelligence',)
_proficiencies_text = (
'Light armor', 'Medium armor', 'Shields', 'Simple weapons',
'Thieve\'s tools', 'Tinker\'s tools',
'One type of artisan\'s tools of your choice')
weapon_proficiencies = (weapon.SimpleWeapon)
class_skill_choices = ('Arcana', 'History', 'Investigation', 'Medicine',
'Nature', 'Perception', 'Sleight of Hand')
"Thieve's tools", "Tinker's tools",
"One type of artisan's tools of your choice")
_multiclass_proficiencies_text = (
"Light armor", "Medium armor", "Shields",
"Thieve's tools", "Tinker's tools")
weapon_proficiencies = (weapons.SimpleWeapon,)
class_skill_choices = (
'Arcana', 'History', 'Investigation',
'Medicine', 'Nature', 'Perception', 'Sleight of Hand')
features_by_level = defaultdict(list)
features_by_level[1] = [features.MagicalTinkering]
features_by_level[1] = [features.MagicalTinkering,
features.FirearmProficiency,
features.ArtificerSpellcasting,
features.ArtificerRitualCasting]
features_by_level[2] = [features.InfuseItem]
features_by_level[3] = [features.TheRightToolForTheJob]
features_by_level[6] = [features.ToolExpertise]
@@ -44,7 +101,6 @@ class Artificer(CharClass):
features_by_level[14] = [features.MagicItemSavant]
features_by_level[18] = [features.MagicItemMaster]
features_by_level[20] = [features.SoulOfArtifice]
subclasses_available = (Alchemist, Artillerist, BattleSmith)
spellcasting_ability = 'intelligence'
spell_slots_by_level = {
1: (2, 2, 0, 0, 0, 0, 0, 0, 0, 0),
@@ -66,5 +122,5 @@ class Artificer(CharClass):
17: (4, 4, 3, 3, 3, 1, 0, 0, 0, 0),
18: (4, 4, 3, 3, 3, 1, 0, 0, 0, 0),
19: (4, 4, 3, 3, 3, 2, 0, 0, 0, 0),
20: (4, 4, 3, 3, 3, 2, 0, 0, 0, 0),
20: (4, 4, 3, 3, 3, 2, 0, 0, 0, 0)
}