diff options
Diffstat (limited to 'character.py')
| -rw-r--r-- | character.py | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/character.py b/character.py index 2a306f9..14a7e42 100644 --- a/character.py +++ b/character.py @@ -1,6 +1,5 @@ import re import json -import copy from dataclasses import dataclass, asdict from items import Armor, Weapon @@ -173,6 +172,22 @@ class Character: self.features.get(weapon.name, 0)) return mod + prof + weapon.potency + def attack_damage_bonus(self, weapon: Weapon, strike_type="melee"): + str_mod = self.ability_modifier("str") + dmg_mod = self.conditions.modifier("damage") + + if strike_type == "melee": + if "thief" in self.features and weapon.finesse: + return (self.ability_modifier("dex")+ dmg_mod).total() + return (str_mod + dmg_mod).total() + elif strike_type == "ranged": + if weapon.thrown > 0: + return (str_mod + dmg_mod).total() + if weapon.propulsive: + return (str_mod.total()//2 + dmg_mod).total() + return dmg_mod.total() + + def toJSON(self): methods = ["classDC", "max_hp", "ac"] obj = asdict(self) @@ -181,18 +196,6 @@ class Character: return json.dumps(obj, indent=2) -class Attack: - attacker = None - target = None - previous_attacks = 0 - distance = 0 - # def map(self, previous_attacks): - # factor = max(0, min(2, previous_attacks)) - # if self.agile: - # return factor * -4 - # return factor * -5 - - class CharacterPlan(LevelingPlan): def __init__(self, data) -> None: self.data = data |
