mirror of
https://github.com/Threnklyn/dungeon-sheets.git
synced 2026-05-19 04:33:26 +02:00
231 lines
4.9 KiB
Python
231 lines
4.9 KiB
Python
from . import weapons
|
|
from . import features as feats
|
|
|
|
|
|
__all__ = ('Dwarf', 'HillDwarf', 'MountainDwarf', 'Elf', 'HighElf',
|
|
'WoodElf', 'DarkElf', 'Halfling', 'LightfootHalfling',
|
|
'StoutHalfling', 'Human', 'Dragonborn', 'Gnome', 'ForestGnome',
|
|
'RockGnome', 'HalfElf', 'HalfOrc', 'Tiefling', 'Aasimar',
|
|
'FallenAasimar', 'Lizardfolk', 'Kenku', 'Aarakocra')
|
|
|
|
|
|
class Race():
|
|
name = "Unknown"
|
|
size = "medium"
|
|
speed = 30
|
|
languages = ('Common', )
|
|
proficiencies_text = tuple()
|
|
weapon_proficiences = tuple()
|
|
skill_proficiencies = ()
|
|
features = tuple()
|
|
strength_bonus = 0
|
|
dexterity_bonus = 0
|
|
constitution_bonus = 0
|
|
intelligence_bonus = 0
|
|
wisdom_bonus = 0
|
|
charisma_bonus = 0
|
|
hit_point_bonus = 0
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
def __repr__(self):
|
|
return f"<self.name>"
|
|
|
|
|
|
# Dwarves
|
|
class Dwarf(Race):
|
|
name = "Dwarf"
|
|
size = "medium"
|
|
speed = 25
|
|
languages = ("Common", "Dwarvish")
|
|
constitution_bonus = 2
|
|
proficiencies_text = ('battleaxes', 'handaxes', 'throwing hammers', 'warhammers')
|
|
weapon_proficiences = (weapons.Battleaxe, weapons.Handaxe,
|
|
weapons.ThrowingHammer, weapons.Warhammer)
|
|
|
|
|
|
class HillDwarf(Dwarf):
|
|
name = "Hill Dwarf"
|
|
wisdom_bonus = 1
|
|
hit_point_bonus = 1
|
|
|
|
|
|
class MountainDwarf(Dwarf):
|
|
name = "Mountain Dwarf"
|
|
strength_bonus = 2
|
|
|
|
|
|
# Elves
|
|
class Elf(Race):
|
|
name = "Elf"
|
|
size = "medium"
|
|
speed = 30
|
|
dexterity_bonus = 2
|
|
skill_proficiencies = ('perception',)
|
|
languages = ('Common', 'Elvish')
|
|
|
|
|
|
class HighElf(Elf):
|
|
name = "High Elf"
|
|
weapon_proficiencies = (weapons.Longsword, weapons.Shortsword,
|
|
weapons.Shortbow, weapons.Longbow)
|
|
proficiencies_text = ('longswords', 'shortswords', 'shortbows', 'longbows')
|
|
intelligence_bonus = 1
|
|
languages = ('Common', 'Elvish', '[choose one]')
|
|
|
|
|
|
class WoodElf(Elf):
|
|
name = "Wood Elf"
|
|
weapon_proficiencies = (weapons.Longsword, weapons.Shortsword,
|
|
weapons.Shortbow, weapons.Longbow)
|
|
proficiencies_text = ('longswords', 'shortswords', 'shortbows', 'longbows')
|
|
wisdom_bonus = 1
|
|
|
|
|
|
class DarkElf(Elf):
|
|
name = "Dark Elf"
|
|
weapon_proficiencies = (weapons.Rapier, weapons.Shortsword, weapons.HandCrossbow)
|
|
proficiencies_text = ('rapiers', 'shortswords', 'hand crossbows')
|
|
charisma_bonus = 1
|
|
|
|
|
|
# Halflings
|
|
class Halfling(Race):
|
|
name = "Halfling"
|
|
size = "small"
|
|
speed = 25
|
|
dexterity_bonus = 2
|
|
languages = ('Common', 'Halfling')
|
|
|
|
|
|
class LightfootHalfling(Halfling):
|
|
name = "Lightfoot Halfling"
|
|
charisma_bonus = 1
|
|
|
|
|
|
class StoutHalfling(Halfling):
|
|
name = "Stout Halfling"
|
|
constitution_bonus = 1
|
|
|
|
|
|
# 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]')
|
|
|
|
|
|
# Dragonborn
|
|
class Dragonborn(Race):
|
|
name = "Dragonborn"
|
|
size = "medium"
|
|
speed = 30
|
|
strength_bonus = 2
|
|
charisma_bonus = 1
|
|
languages = ("Common", "Draconic")
|
|
|
|
|
|
# Gnomes
|
|
class Gnome(Race):
|
|
name = "Gnome"
|
|
size = "small"
|
|
speed = 25
|
|
intelligence_bonus = 2
|
|
languages = ("Common", "Gnomish")
|
|
|
|
|
|
class ForestGnome(Gnome):
|
|
name = "Forest Gnome"
|
|
dexterity_bonus = 1
|
|
|
|
|
|
class RockGnome(Gnome):
|
|
name = "Rock Gnome"
|
|
constitution_bonus = 1
|
|
|
|
|
|
# Half-elves
|
|
class HalfElf(Race):
|
|
name = "Half-Elf"
|
|
size = "medium"
|
|
speed = 30
|
|
charisma_bonus = 2
|
|
languages = ("Common", "Elvish", "[choose one]")
|
|
|
|
|
|
# Half-Orcs
|
|
class HalfOrc(Race):
|
|
name = "Half-Orc"
|
|
size = "medium"
|
|
speed = 30
|
|
strength_bonus = 2
|
|
constitution_bonus = 1
|
|
languages = ("Common", "Orc")
|
|
|
|
|
|
# Tielflings
|
|
class Tiefling(Race):
|
|
name = "Tiefling"
|
|
size = "medium"
|
|
speed = 30
|
|
intelligence_bonus = 1
|
|
charisma_bonus = 2
|
|
languages = ("Common", "Infernal")
|
|
|
|
|
|
# Aassimar
|
|
class Aasimar(Race):
|
|
name = 'Aasimar'
|
|
size = 'medium'
|
|
speed = 30
|
|
charisma_bonus = 2
|
|
languages = ("Common", "Celestial")
|
|
|
|
|
|
# Fallen Aasimar
|
|
class FallenAasimar(Aasimar):
|
|
name = "Fallen Aasimar"
|
|
strength_bonus = 1
|
|
|
|
|
|
# Lizardfolk
|
|
class Lizardfolk(Race):
|
|
name = 'Lizardfolk'
|
|
size = 'medium'
|
|
speed = """30 (+swim)"""
|
|
constitution_bonus = 2
|
|
wisdom_bonus = 1
|
|
languages = ('Common', 'Draconic')
|
|
weapon_proficiencies = (weapons.Bite,)
|
|
proficiencies_text = ('bite',)
|
|
|
|
|
|
# Kenku
|
|
class Kenku(Race):
|
|
name = 'Kenku'
|
|
size = 'medium'
|
|
speed = 30
|
|
dexterity_bonus = 2
|
|
wisdom_bonus = 1
|
|
languages = ('Common', 'Auran')
|
|
|
|
|
|
# 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',)
|