rpgtex / DND-5e-LaTeX-Template

LaTeX package to typeset material for the fifth edition of the "world's greatest roleplaying game".
MIT License
1.45k stars 312 forks source link

Display proficiency bonus in Monster statblock #319

Open Darkade opened 3 years ago

Darkade commented 3 years ago

Hi! I'm just now realizing there's no option to add the proficiency bonus of a monster in the \DndMonsterDetails neither is it automatically calculated from the Challenge rating. Is this possible to add?

Thanks!

BrianCriswell commented 3 years ago

It's possible, but automation on that level runs the risk of losing flexibility for the times when a monster does not follow the general rules of monster building.

Proficiency is not displayed anywhere. It is just built into other numbers for attacks, ability checks, saving throw bonuses or DCs. Because of the way function arguments work in LaTeX, it would not save the end user much typing anyway, but it could help automate the calculation.

Thinking aloud: Implementing this would likely require adding a concept of state to the DndMonster environment. This would allow any DndMonster-related options to be set and stay in place for the duration of the environment and be cleared when the environment is closed. Most of our DndMonster-related functions are somewhat stateless at the moment where the options passed to, say, DndMonsterBasics are used and then forgotten.

Darkade commented 3 years ago

Gotcha. I've made an small path that adds this and was about to make a pull request and then I realized.

In my writing process the easiest way to check for statblocks is in DnD Beyond and their statblocks do display the proficiency bonus. While the books themselves do not. I hadn't noticed this difference and now I'm wondering why the decision to show them on dndbeyond.

Thank you!

Darkade commented 3 years ago

Just as I was writing this, I was informed that Candlekeep mysteries was the first book to officially print the proficiency bonus. I don't know why the chance.

Let me know if you'd like me to make a pull request. :3

BrianCriswell commented 3 years ago

I just looked on dndbeyond.com and saw the new Proficiency section on the stat block. It seems weird to me and not very useful, but I have seen plenty of people post that they like it.

If you do add this in, it would need to be an option in DndSetOptions (I don't remember if that function has even been set up yet). The option would need to default to off at least in the short term for backwards compatibility.

You can also include it right now by including the full text of the line after the word "Challenge", and this could all be wrapped into some sort of function that you personally use.

%pseudocode "DndMonsterListFont" is not the right name
4 (1,100 XP) \vfill {\DndSetMonsterListFont {Proficiency Bonus }} +2
Darkade commented 3 years ago

For the record.

The monster manual in "Compendium Mode" does not show you the proficiency bonus https://www.dndbeyond.com/sources/mm/monsters-o#Orcs

But when you look at a monster it does display https://www.dndbeyond.com/monsters/orc

And I don't have Candlekeep, but I understand it was added to print, so I'd expect for the proficiency bonus to bedisplayed in compendium mode for that book.

I'll take your notes into account and will make the proper patch over the weekend.

Thank you!

Darkade commented 3 years ago

\DndOptions hasn't been implemented so I'm checking the \DndSetFonts function to base it from there. But It's the first time I develop something for tex, to I'm not 100% clear yet on how it works.

In the mean time the basic functionality works, but it's not optional yet. I'll be looking into how Document Functions work to implement \DndOptions

Anyway, you can check the simple proficiency bonus function here if you'd like and I'll open the pr as soon as I figure the rest out

https://github.com/rpgtex/DND-5e-LaTeX-Template/compare/dev...Darkade:feature/proficiencybonus

Thank you!

kbriggs commented 3 years ago

Came here to see if anyone else had requested the proficiency bonus detail...

I took a less smart approach, simply adding another optional detail item proficiency-bonus like the immunities ones. So the author has to explicitly specify it for each stat block, but on the plus side means existing documents won't change: https://github.com/rpgtex/DND-5e-LaTeX-Template/compare/dev...kbriggs:npcprofbonus

I'll open a PR but feel free to reject if e.g. you prefer a different approach.

kbriggs commented 3 years ago

I integrated @Darkade's calculation of the proficiency bonus from the challenge rating with my PR #329; specifying the special value * or no value at all (e.g. challenge-rating = 5, proficiency-bonus, skills = …) will display the calculated value.

In the future to make displaying the proficiency bonus the default, we would just have to add to the keys definition:

  proficiency-bonus .initial:n = *,

(possibly along with a flag to suppress it for individual stat blocks:

  no-proficiency-bonus .meta:n = { proficiency-bonus = {} },
  noproficiencybonus .meta:n = { no-proficiency-bonus },

), which presumably could be conditional on a package option.

(@Darkade, I credited you as Co-authored-by: I Reyes <4106546+Darkade@users.noreply.github.com> which is what shows up when I pull your branch from github, let me know if that isn't correct)

Darkade commented 3 years ago

That's correct! Thank you. I haven't had a change to get back around to this so this. Your solution seems very neat :3