tassaron / dnd-character

library for making Dungeons & Dragons 5e characters as serializable data
https://pypi.org/project/dnd-character/
Eclipse Public License 2.0
45 stars 17 forks source link

Paladin Armor Class is always 16 #6

Closed bradleygrant closed 2 years ago

bradleygrant commented 2 years ago

I'm using this library to generate character sheets for a college statistics and computer simulation course.

I'm doing some statistical analysis of the different character types and I noticed that for Paladins and only Paladins, the armor class is always 16.

Is this correct behavior? The 5E Player's Handbook doesn't seem to indicate that.

tassaron commented 2 years ago

By "always 16" do you mean it remains 16 as you change dexterity?

I believe this is because Paladins start with heavy armour which does not apply the dexterity bonus, unlike most other characters who begin with light armour. If I remove the armour, the AC drops to 12:

pal = Paladin()
>>> pal.armour_class
16
>>> from pprint import pprint
>>> pprint(pal.inventory)
[{'armor_category': 'Heavy',
  'armor_class': {'base': 16, 'dex_bonus': False, 'max_bonus': None},
  'cost': {'quantity': 75, 'unit': 'gp'},
  'equipment_category': {'index': 'armor',
                         'name': 'Armor',
                         'url': '/api/equipment-categories/armor'},
  'index': 'chain-mail',
  'name': 'Chain Mail',
  'stealth_disadvantage': True,
  'str_minimum': 13,
  'url': '/api/equipment/chain-mail',
  'weight': 55}]
>>> pal.removeItem(pal.inventory[0])
>>> pal.armour_class
12

Note the 'armor_class': {'base': 16, 'dex_bonus': False, 'max_bonus': None} part which indicates that dex bonus will not apply.

This page seems to imply that it is correct behaviour. I'm not a D&D expert so I could've misinterpreted the rules or something. If so, please let me know :) And thank you for the feedback.