Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
name = "Rock Gnome"
constitution_bonus = 1
features = _Gnome.features + (feats.ArtificersLore,
feats.Tinker)
class DeepGnome(_Gnome):
name = "Deep Gnome"
dexterity_bonus = 1
languages = ("Common", "Gnomish", "Undercommon")
features = (feats.SuperiorDarkvision, feats.GnomeCunning,
feats.StoneCamouflage)
# Half-elves
class HalfElf(Race):
name = "Half-Elf"
size = "medium"
speed = 30
charisma_bonus = 2
skill_choices = ('acrobatics', 'animal handling', 'arcana',
'athletics', 'deception', 'history', 'insight',
'intimidation', 'investigation', 'medicine', 'nature',
'perception', 'performance', 'persuasion', 'religion',
'sleight of hand', 'stealth', 'survival')
num_skill_choices = 2
languages = ("Common", "Elvish", "[choose one]")
features = (feats.Darkvision, feats.FeyAncestry)
# Half-Orcs
class HalfOrc(Race):
# Triton
class Triton(Race):
name = "Triton"
size = "medium"
strength_bonus = 1
constitution_bonus = 1
charisma_bonus = 1
speed = "30 (30 swim)"
features = (feats.Amphibious, feats.ControlAirAndWater,
feats.EmissaryOfTheSea, feats.GuardiansOfTheDepths)
languages = ("Common", "Primordial")
spells_known = (spells.FogCloud,)
# Aarakocra
class Aarakocra(Race):
name = 'Aarakocra'
size = 'medium'
speed = "25 (50 fly)"
dexterity_bonus = 2
wisdom_bonus = 1
languages = ('Common', 'Aarakocra', 'Auran')
weapon_proficiencies = (weapons.Talons,)
proficiences_text = ('Talons',)
def __init__(self, owner=None):
super().__init__(owner=owner)
self.owner.wield_weapon("talons")
# Genasi
class _Genasi(Race):
def race(self, newrace):
if isinstance(newrace, race.Race):
self._race = newrace
self._race.owner = self
elif isinstance(newrace, type) and issubclass(newrace, race.Race):
self._race = newrace(owner=self)
elif isinstance(newrace, str):
try:
self._race = findattr(race, newrace)(owner=self)
except AttributeError:
msg = (f'Race "{newrace}" not defined. '
f'Please add it to ``race.py``')
self._race = race.Race(owner=self)
warnings.warn(msg)
elif newrace is None:
self._race = race.Race(owner=self)
# Kenku
class Kenku(Race):
name = 'Kenku'
size = 'medium'
speed = 30
dexterity_bonus = 2
wisdom_bonus = 1
languages = ('Common', 'Auran')
skill_choices = ('acrobatics', 'deception', 'stealth',
'sleight of hand')
num_skill_choices = 2
features = (feats.ExpertForgery, feats.Mimicry,)
# Tabaxi
class Tabaxi(Race):
name = 'Tabaxi'
size = 'medium'
dexterity_bonus = 2
charisma_bonus = 1
speed = "30 (20 climb)"
languages = ("Common", "[Choose One]")
weapon_proficiencies = (weapons.Claws,)
proficiences_text = ('Claws',)
skill_proficiencies = ('perception', 'stealth')
features = (feats.Darkvision, feats.FelineAgility,)
def __init__(self, owner=None):
super().__init__(owner=owner)
self.owner.wield_weapon("claws")
class LightfootHalfling(_Halfling):
name = "Lightfoot Halfling"
charisma_bonus = 1
features = _Halfling.features + (feats.NaturallyStealthy,)
class StoutHalfling(_Halfling):
name = "Stout Halfling"
constitution_bonus = 1
features = _Halfling.features + (feats.StoutResilience,)
# Humans
class Human(Race):
name = "Human"
size = "medium"
speed = 30
strength_bonus = 1
dexterity_bonus = 1
constitution_bonus = 1
intelligence_bonus = 1
wisdom_bonus = 1
charisma_bonus = 1
languages = ("Common", '[choose one]')
class Rashemi(Human):
name = 'Rashemi'
languages = ("Common", "Elvish", "Giant")
# Goliath
class Goliath(Race):
name = "Goliath"
size = "Medium"
speed = 30
skill_proficiencies = ("athletics",)
languages = ("Common", "Giant")
features = (feats.StonesEndurance, feats.PowerfulBuild,
feats.MountainBorn)
# Lizardfolk
class Lizardfolk(Race):
name = 'Lizardfolk'
size = 'medium'
speed = """30 (30 swim)"""
constitution_bonus = 2
wisdom_bonus = 1
languages = ('Common', 'Draconic')
weapon_proficiencies = (weapons.Bite,)
proficiencies_text = ('bite',)
features = (feats.CunningArtisan, feats.HoldBreath,
feats.NaturalArmor, feats.HungryJaws)
skill_choices = ('animal handling', 'nature', 'perception',
'stealth', 'survival')
def __init__(self, owner=None):
super().__init__(owner=owner)
self.owner.wield_weapon("bite")
def race(self, newrace):
if isinstance(newrace, race.Race):
self._race = newrace
self._race.owner = self
elif isinstance(newrace, type) and issubclass(newrace, race.Race):
self._race = newrace(owner=self)
elif isinstance(newrace, str):
try:
self._race = findattr(race, newrace)(owner=self)
except AttributeError:
msg = (f'Race "{newrace}" not defined. '
f'Please add it to ``race.py``')
self._race = race.Race(owner=self)
warnings.warn(msg)
elif newrace is None:
self._race = race.Race(owner=self)
wisdom_bonus = 1
languages = ('Common', 'Draconic')
weapon_proficiencies = (weapons.Bite,)
proficiencies_text = ('bite',)
features = (feats.CunningArtisan, feats.HoldBreath,
feats.NaturalArmor, feats.HungryJaws)
skill_choices = ('animal handling', 'nature', 'perception',
'stealth', 'survival')
def __init__(self, owner=None):
super().__init__(owner=owner)
self.owner.wield_weapon("bite")
# Kenku
class Kenku(Race):
name = 'Kenku'
size = 'medium'
speed = 30
dexterity_bonus = 2
wisdom_bonus = 1
languages = ('Common', 'Auran')
skill_choices = ('acrobatics', 'deception', 'stealth',
'sleight of hand')
num_skill_choices = 2
features = (feats.ExpertForgery, feats.Mimicry,)
# Tabaxi
class Tabaxi(Race):
name = 'Tabaxi'
size = 'medium'
features = (feats.Darkvision, feats.LongLimbed,
feats.PowerfulBuild, feats.SupriseAttack)
skill_proficiencies = ("stealth", )
languages = ("Common", "Goblin")
class Goblin(Race):
name = "Goblin"
dexterity_bonus = 2
constitution_bonus = 1
size = 'small'
speed = 30
features = (feats.Darkvision, feats.FuryOfTheSmall,
feats.NimbleEscape)
languages = ("Common", "Goblin")
class HobGoblin(Race):
name = "HobGoblin"
constitution_bonus = 2
intelligence_bonus = 1
size = 'medium'
speed = 30
features = (feats.Darkvision, feats.SavingFace)
proficiencies_text = ('light armor', '[Chose two martial melee weapons]')
languages = ("Common", "Goblin")
class Kobold(Race):
name = "Kobold"
dexterity_bonus = 2
strength_bonus = -2
size = 'small'
speed = 30
features = (feats.Darkvision, feats.PackTactics,
speed = 30
features = (feats.Darkvision, feats.FuryOfTheSmall,
feats.NimbleEscape)
languages = ("Common", "Goblin")
class HobGoblin(Race):
name = "HobGoblin"
constitution_bonus = 2
intelligence_bonus = 1
size = 'medium'
speed = 30
features = (feats.Darkvision, feats.SavingFace)
proficiencies_text = ('light armor', '[Chose two martial melee weapons]')
languages = ("Common", "Goblin")
class Kobold(Race):
name = "Kobold"
dexterity_bonus = 2
strength_bonus = -2
size = 'small'
speed = 30
features = (feats.Darkvision, feats.PackTactics,
feats.GrovelCowerAndBeg, feats.SunlightSensitivity)
languages = ("Common", "Draconic")
class Orc(Race):
name = "Orc"
strength_bonus = 2
constitution_bonus = 1
intelligence_bonus = -2
size = 'medium'
speed = 30