summaryrefslogtreecommitdiff
path: root/character.py
diff options
context:
space:
mode:
authorSupremist <sergkarv@gmail.com>2025-10-29 22:58:37 +0200
committerSupremist <sergkarv@gmail.com>2025-10-29 22:58:37 +0200
commit9fa4cfbe2f948f4067ca1572bbc5dbfab678e7da (patch)
tree590bb32b5a11dd2f3b5f9a0999d5e809ad1f3749 /character.py
parent0ada03ebf6a879e0a77475d525141d1090bcd634 (diff)
downloadpf2e_calc-9fa4cfbe2f948f4067ca1572bbc5dbfab678e7da.tar.xz
pf2e_calc-9fa4cfbe2f948f4067ca1572bbc5dbfab678e7da.zip
Add Attack action
Diffstat (limited to 'character.py')
-rw-r--r--character.py29
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