canismarko / dungeon-sheets

A tool to create character sheets and GM session notes for Dungeons and Dragons fifth edition (D&D 5e).

Home Page:https://dungeon-sheets.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Multiclass attribute override issues

pucknut2k1 opened this issue · comments

First of all, thank you for such a complete system, but I'm afraid my first test character was doomed to break it as all users tend to do. So far, I've been able to correct a few of the issues, but I've been unable to figure these out. I'm working with a Lizardfolk Bard 1 / Monk 1 here so don't feel bad about not expecting these triggers.

  1. Moderate issue: When multiclassed into Monk, unarmed attacks should get the max(str,dex) attack and damage bonus option but this does not seem to apply to Bite (I have not verified Claws/Talons yet, but assume they have the same issue). My attempts to correct this issue have worked for standard weapons, but I haven't found the solution for skills like Bite yet. Other weapons show the correct values, so it isn't a major problem but accuracy would be preferred.
  2. Minor annoyance: Speed is fixed to a single line so "30 (30 swim)" is hard to read on the created pdf. I have not found a way to make this a multiline entry that is more legible.
  3. Found and fixed: Lizardfolk were missing the "num_skill_choices = 2" option for their skill choices on character creation in race.py.
  4. Found and fixed: Natural Armor and Unarmored Defense shouldn't both apply, but I was getting a +1ac boost when I multi-classed. I added "and not char.has_feature(NaturalArmor)" to line 149 of stats.py which of course only meets my criteria, but fixed it for this case. There are likely others that need a better solution.
  5. Found and fixed: proficiencies_text was duplicated for anything both classes used. I added"all_proficiences = list(set(all_proficiences))" at line 616 in character.py as a quick fix, but both lists still get the initial capitalization so it still looks a bit weird.

Thanks for this detailed feedback. I should be able to do something about (2), and maybe when I have some time I'll look into (1) but it will probably be a little while.

Feel free to submit a PR for 3-5?

I have resolved issue 1 for multi-class Monk at this point, at least for everything I've tested against it so far.

Digging into issue 2, it looks to be an artifact of the form-fill on the blank-character-sheet-default.pdf but I haven't found a good .pdf editor yet (without access to Acrobat). In line with issue 2, I would like to have more than 3 weapon options listed in the Attacks and Spellcasting block. I extended the length of the list in make_sheets.py to match my character weapons list, but without fields to populate in the .pdf template nothing shows up. If you have any recommendations, I'd be happy to clean these up as well.

Not a significant issue, but Bard and Monk both use a 1d8 Hit Die. After Multiclassing, it lists as 1d8 + 1d8 rather than 2d8. I have not investigated this yet to see how difficult it would be to rectify.

Also not a significant issue, but the weapon fields don't compress/change font size when they exceed the form bounds like the background text fields or Speed do. Quarterstaff doesn't fit. I just shortened the name in weapons.py to Staff (keeping the class name as Quarterstaff to avoid changing all the other references) as I expect this is also an artifact of the .pdf template.

I'm still pretty new to github, so I'll need to do some research on how to properly submit the PR for my changes. I probably won't get that submitted until next week sometime. Ideally, I'd like to further validate my code and make sure it covers more cases that my immediate requirement so that it's more beneficial to your long-term project.

Cheers! Yell if you'd like to see my code before I figure out how to run the PR.

Oh for some reason I had it in my head that (2) was about the LaTeX rendering. Yeah I tried digging into the PDF field flags once to enable rich text and got dizzy. Good luck with that one.

I made the hitdice thing a separate issue so it doesn't get lost in the comments.

I think you're right about the quarterstaff thing, though if I remember right those names get used in the character generator menu, so if they don't match the class name things break. Maybe check that though? It's been a while since I've used the character generator.

For (1) the following seems to work:

diff --git a/dungeonsheets/weapons.py b/dungeonsheets/weapons.py
index be5244c..fff7f2f 100644
--- a/dungeonsheets/weapons.py
+++ b/dungeonsheets/weapons.py
@@ -517,7 +517,7 @@ class SunBolt(RangedWeapon):
 
 
 # Custom weapons
-class HeavyPunch(MeleeWeapon):
+class HeavyPunch(Unarmed):
     base_damage = "1d4"
     name = "Heavy Punch"
     damage_type = "b"
@@ -525,7 +525,7 @@ class HeavyPunch(MeleeWeapon):
     attack_bonus = -5  # Heavy weapon master
 
 
-class Bite(MeleeWeapon):
+class Bite(Unarmed):
     name = "Bite"
     base_damage = "1d4"
     damage_type = "p"
@@ -535,7 +535,7 @@ class Bite(MeleeWeapon):
     ability = "strength"
 
 
-class Talons(MeleeWeapon):
+class Talons(Unarmed):
     name = "Talons"
     base_damage = "1d4"
     damage_type = "s"
@@ -545,7 +545,7 @@ class Talons(MeleeWeapon):
     ability = "strength"
 
 
-class Claws(MeleeWeapon):
+class Claws(Unarmed):
     name = "Claws"
     base_damage = "1d4"
     damage_type = "s"

I'm not 100% sure, but can provide a patch if others think so too. In any case, this does have the desired effect for the Cleric (5) / Monk (2) Tabaxi that I just created :-)

Perhaps HeavyPunch ought not to be included in the above patch... Or maybe it should on second thought...