added multiclass proficiencies for all classes

This commit is contained in:
Ben Cook
2018-12-21 12:44:11 -05:00
parent 0dbe54605f
commit 66b08b57ea
13 changed files with 66 additions and 3 deletions
+3 -1
View File
@@ -100,9 +100,11 @@ class Barbarian(CharClass):
class_name = 'Barbarian'
hit_dice_faces = 12
saving_throw_proficiencies = ('strength', 'constitution')
weapon_proficiencies = (weapons.simple_weapons + weapons.martial_weapons)
_proficiencies_text = ('light armor', 'medium armor', 'shields',
'simple weapons', 'martial weapons')
weapon_proficiencies = (weapons.simple_weapons + weapons.martial_weapons)
multiclass_weapon_proficiencies = weapon_proficiencies
_multiclass_proficiencies_text = ('shields', 'simple weapons', 'martial weapons')
class_skill_choices = ('Animal Handling', 'Athletics',
'Intimidation', 'Nature', 'Perception', 'Survival')
subclasses_available = (BerserkerPath, TotemWarriorPath, BattleragerPath,
+3
View File
@@ -129,6 +129,9 @@ class Bard(CharClass):
'Nature', 'Perception', 'Performance', 'Persuasion',
'Religion', 'Sleight of Hand', 'Stealth',
'Survival')
multiclass_weapon_proficiencies = ()
_multiclass_proficiencies_text = ('Light Armor', '[choose one skill]',
'[choose one musical instrument]')
num_skill_choices = 3
features_by_level = defaultdict(list)
subclasses_available = (CollegeOfLore, CollegeOfValor, CollegeOfGlamour,
+1
View File
@@ -63,6 +63,7 @@ class CharClass():
'spells_known', 'spells_prepared'):
new_list = getattr(self, attr, ()) + getattr(self.subclass, attr, ())
setattr(self, attr, new_list)
# All subclass proficiencies transfer, regardless of if this is primary class
self.multiclass_weapon_proficiencies += (self.subclass.weapon_proficiencies)
self._multiclass_proficiencies_text += (self._proficiencies_text)
self.spellcasting_ability = (self.spellcasting_ability or
+2
View File
@@ -187,6 +187,8 @@ class Cleric(CharClass):
_proficiencies_text = ('light armor', 'medium armor', 'shields',
'all simple weapons')
weapon_proficiencies = weapons.simple_weapons
multiclass_weapon_proficiencies = ()
_multiclass_proficiencies_text = ('light armor', 'medium armor', 'shields')
class_skill_choices = ('History', 'Insight', 'Medicine',
'Persuasion', 'Religion')
features_by_level = defaultdict(list)
+4
View File
@@ -96,6 +96,10 @@ class Druid(CharClass):
weapons.Javelin, weapons.Mace,
weapons.Quarterstaff, weapons.Scimitar,
weapons.Sickle, weapons.Sling, weapons.Spear)
multiclass_weapon_proficiencies = ()
_multiclass_proficiencies_text = (
'Light armor', 'medium armor',
'shields (druids will not wear armor or use shields made of metal)')
class_skill_choices = ('Arcana', 'Animal Handling', 'Insight',
'Medicine', 'Nature', 'Perception', 'Religion',
'Survival')
+33 -1
View File
@@ -128,7 +128,39 @@ class Samurai(SubClass):
"""
name = "Samurai"
features_by_level = defaultdict(list)
# Custom
class Gunslinger(SubClass):
"""Most warriors and combat specialists spend their years perfecting the
classic arts of swordplay, archery, or polearm tactics. Whether duelist or
infantry, martial weapons were seemingly perfected long ago, and the true
challenge is to master them.
However, some minds couldn't stop with the innovation of the
crossbow. Experimentation with alchemical components and rare metals have
unlocked the secrets of controlled explosive force. The few who survive
these trials of ingenuity may become the first to create, and deftly wield,
the first firearms.
This archetype focuses on the ability to design, craft, and utilize
powerful, yet dangerous ranged weapons. Through creative innovation and
immaculate aim, you become a distance force of death on the
battlefield. However, not being a perfect science, firearms carry an
inherent instability that can occastionally leave you without a functional
means of attack. This is the danger of new, untested technologies in a
world where arcane energies that rule the elements are ever present.
Should this path of powder, fire, and metal call to you, keep your wits
about you, hold on to your convictions as a fighter, and let skill meet
luck to guide your bullets to strike true.
"""
name = "Gunslinger"
features_by_level = defaultdict(list)
weapon_proficiencies = (weapons.firearms)
_proficiencies_text = ('firearms')
class Fighter(CharClass):
class_name = 'Fighter'
@@ -147,4 +179,4 @@ class Fighter(CharClass):
features_by_level = defaultdict(list)
subclasses_available = (Champion, BattleMaster, EldritchKnight,
PurpleDragonKnight, ArcaneArcher, Cavalier,
Samurai)
Samurai, Gunslinger)
+3
View File
@@ -115,6 +115,9 @@ class Monk(CharClass):
'simple weapons', 'shortswords', 'unarmed',
"one type of artisan's tools or one musical instrument")
weapon_proficiencies = (weapons.Shortsword, weapons.Unarmed) + weapons.simple_weapons
multiclass_weapon_proficiencies = weapon_proficiencies
_multiclass_proficiencies_text = ('simple weapons', 'shortswords',
'unarmed')
class_skill_choices = ('Acrobatics', 'Athletics', 'History', 'Insight',
'Religion', 'Stealth')
subclasses_available = (OpenHandWay, ShadowWay,
+4 -1
View File
@@ -226,6 +226,9 @@ class Paladin(CharClass):
_proficiencies_text = ('All armor', 'shields', 'simple weapons',
'martial weapons')
weapon_proficiencies = weapons.simple_weapons + weapons.martial_weapons
multiclass_weapon_proficiencies = weapon_proficiencies
_multiclass_proficiencies_text = ('light armor', 'medium armor', 'shields',
'simple weapons', 'martial weapons')
class_skill_choices = ("Athletics", 'Insight', 'Intimidation',
'Medicine', 'Persuasion', 'Religion')
features_by_level = defaultdict(list)
@@ -245,7 +248,7 @@ class Paladin(CharClass):
9: (0, 4, 3, 2, 0, 0, 0, 0, 0, 0),
10: (0, 4, 3, 2, 0, 0, 0, 0, 0, 0),
11: (0, 4, 3, 3, 0, 0, 0, 0, 0, 0),
12: (0, 4, 3, 3, 0, 0, 0, 0, 0, 0),
p 12: (0, 4, 3, 3, 0, 0, 0, 0, 0, 0),
13: (0, 4, 3, 3, 1, 0, 0, 0, 0, 0),
14: (0, 4, 3, 3, 1, 0, 0, 0, 0, 0),
15: (0, 4, 3, 3, 2, 0, 0, 0, 0, 0),
+4
View File
@@ -78,6 +78,10 @@ class Ranger(CharClass):
_proficiencies_text = ("light armor", "medium armor", "shields",
"simple weapons", "martial weapons")
weapon_proficiencies = weapons.simple_weapons + weapons.martial_weapons
multiclass_weapon_proficiencies = weapon_proficiencies
_multiclass_proficiencies_text = ('light armor', 'medium armor', 'shields',
'simple weapons', 'martial weapons',
'[choose one skill from Ranger list]')
class_skill_choices = ('Animal Handling', 'Athletics', 'Insight',
'Investigation', 'Nature', 'Perception', 'Stealth',
'Survival')
+3
View File
@@ -125,6 +125,9 @@ class Rogue(CharClass):
weapon_proficiencies = weapons.simple_weapons + (
weapons.HandCrossbow, weapons.Longsword, weapons.Rapier,
weapons.Shortsword)
multiclass_weapon_proficiencies = ()
_multiclass_proficiencies_text = ('light armor', "thieves' tools",
'[choose one skill from Rogue list]')
class_skill_choices = ('Acrobatics', 'Athletics', 'Deception',
'Insight', 'Intimidation', 'Investigation',
'Perception', 'Performance', 'Persuasion',
+2
View File
@@ -100,6 +100,8 @@ class Sorceror(CharClass):
weapon_proficiencies = (weapons.Dagger, weapons.Dart,
weapons.Sling, weapons.Quarterstaff,
weapons.LightCrossbow)
multiclass_weapon_proficiencies = ()
_multiclass_proficiencies_text = ()
class_skill_choices = ('Arcana', 'Deception', 'Insight',
'Intimidation', 'Persuasion', 'Religion')
features_by_level = defaultdict(list)
+2
View File
@@ -121,6 +121,8 @@ class Warlock(CharClass):
'Intimidation', 'Investigation', 'Nature',
'Religion')
weapon_proficiencies = weapons.simple_weapons
multiclass_weapon_proficiencies = weapon_proficiencies
_multiclass_proficiencies_text = ('light armor', 'simple weapons')
features_by_level = defaultdict(list)
subclasses_available = (Archfey, Fiend, GreatOldOne, Undying, Celestial,
Hexblade)
+2
View File
@@ -165,6 +165,8 @@ class Wizard(CharClass):
weapon_proficiencies = (weapons.Dagger, weapons.Dart,
weapons.Sling, weapons.Quarterstaff,
weapons.LightCrossbow)
multiclass_weapon_proficiencies = ()
_multiclass_proficiencies_text = ()
class_skill_choices = ('Arcana', 'History', 'Investigation',
'Medicine', 'Religion')
features_by_level = defaultdict(list)