mirror of
https://github.com/Threnklyn/dungeon-sheets.git
synced 2026-06-05 12:29:39 +02:00
Some more advanced characteristics, different player classes, and a CLI interface.
This commit is contained in:
+90
-12
@@ -16,15 +16,15 @@ class Character():
|
||||
name = ""
|
||||
class_name = ""
|
||||
player_name = ""
|
||||
background = ""
|
||||
level = 1
|
||||
alignment = 'true neutral'
|
||||
alignment = "Neutral"
|
||||
race = "Human"
|
||||
xp = 0
|
||||
armor_class = 10
|
||||
speed = 30 # In feet
|
||||
# Hit points
|
||||
hp_max = 10
|
||||
hit_dice_num = 1
|
||||
hit_dice_faces = 8
|
||||
hit_dice_faces = 2
|
||||
# Base stats (ability scores
|
||||
strength = Stat()
|
||||
dexterity = Stat()
|
||||
@@ -32,7 +32,13 @@ class Character():
|
||||
intelligence = Stat()
|
||||
wisdom = Stat()
|
||||
charisma = Stat()
|
||||
|
||||
# Inventory
|
||||
cp = 0
|
||||
sp = 0
|
||||
ep = 0
|
||||
gp = 0
|
||||
pp = 0
|
||||
|
||||
def __init__(self, **attrs):
|
||||
"""Takes a bunch of attrs and passes them to ``set_attrs``"""
|
||||
self.set_attrs(**attrs)
|
||||
@@ -42,16 +48,88 @@ class Character():
|
||||
dictionary."""
|
||||
for attr, val in attrs.items():
|
||||
setattr(self, attr, val)
|
||||
|
||||
|
||||
@property
|
||||
def hit_dice(self):
|
||||
"""What type and how many dice to use for re-gaining hit points.
|
||||
|
||||
To change, set hit_dice_num and hit_dice_faces."""
|
||||
return f"{self.hit_dice_num}d{self.hit_dice_faces}"
|
||||
return f"{self.level}d{self.hit_dice_faces}"
|
||||
|
||||
@hit_dice.setter
|
||||
def hit_dice(self, val):
|
||||
dice = read_dice_str(val)
|
||||
self.hit_dice_faces = dice.faces
|
||||
self.hit_dice_num = dice.num
|
||||
@property
|
||||
def proficiency_bonus(self):
|
||||
if self.level < 5:
|
||||
prof = 2
|
||||
elif 5 <= self.level < 9:
|
||||
prof = 3
|
||||
elif 9 <= self.level < 13:
|
||||
prof = 4
|
||||
elif 13 <= self.level < 17:
|
||||
prof = 5
|
||||
elif 17 <= self.level:
|
||||
prof = 6
|
||||
return prof
|
||||
|
||||
@property
|
||||
def armor_class(self):
|
||||
"""Armor class, without items."""
|
||||
return 10 + self.dexterity.modifier
|
||||
|
||||
|
||||
class Barbarian(Character):
|
||||
class_name = 'Barbarian'
|
||||
hit_dice_faces = 12
|
||||
|
||||
|
||||
class Bard(Character):
|
||||
class_name = 'Bard'
|
||||
hit_dice_faces = 8
|
||||
|
||||
|
||||
class Cleric(Character):
|
||||
class_name = 'Cleric'
|
||||
hit_dice_faces = 8
|
||||
|
||||
|
||||
class Druid(Character):
|
||||
class_name = 'Druid'
|
||||
hit_dice_faces = 8
|
||||
|
||||
|
||||
class Fighter(Character):
|
||||
class_name = 'Fighter'
|
||||
hit_dice_faces = 10
|
||||
|
||||
|
||||
class Monk(Character):
|
||||
class_name = 'Monk'
|
||||
hit_dice_faces = 8
|
||||
|
||||
|
||||
class Paladin(Character):
|
||||
class_name = 'Paladin'
|
||||
hit_dice_faces = 10
|
||||
|
||||
|
||||
class Ranger(Character):
|
||||
class_name = 'Ranger'
|
||||
hit_dice_faces = 10
|
||||
|
||||
|
||||
class Rogue(Character):
|
||||
class_name = 'Rogue'
|
||||
hit_dice_faces = 8
|
||||
|
||||
|
||||
class Sorceror(Character):
|
||||
class_name = 'Sorceror'
|
||||
hit_dice_faces = 6
|
||||
|
||||
class Warlock(Character):
|
||||
class_name = 'Warlock'
|
||||
hit_dice_faces = 8
|
||||
|
||||
|
||||
class Wizard(Character):
|
||||
class_name = 'Wizard'
|
||||
hit_dice_faces = 6
|
||||
|
||||
Reference in New Issue
Block a user