[RPG] Defensive Duelist x Medium Armor Master

dnd-5efeatsoptimization

As a level 6 character (1 fighter/5 warlock) with 16 dextery and using a rapier/shield/scale mail and Defense Fighting Style (19 CA, up to 20 with a half plate), which one of those feats would make my character less likely to get hit against 4 attacks with a +5 bonus to hit/turn?

I'll be the party's tank and I intend to fight using the Darkness + Devil's Sight Combo as often as possible so most attacks will have disadvantage against me, Booming Blade should make anyone think twice before moving away from me.

With the Medium Armor Master I can have a constant 20 AC with just a scale mail, while the Defensive Duelist would allow me to to get a constant 19 and use my reaction (which is wasted most turns otherwise) to get 22 against a single attack per turn.

I know this is a question with quite some math involved but I hope it won't be closed.
Thanks in advance.

Best Answer

Defensive Duelist is strictly better than Medium Armor Master

The math for Medium Armour Master is relatively simple - you have an AC of 20.

Defensive Duelist is slightly more complicated. You effectively have an AC of 22 until the first time an attack rolls well enough to hit AC 19 but not well enough to hit AC 22 - you use your reaction to make that one miss and all subsequent attacks are against AC 19.

This anydice simulates attackers with disadvantage.

The results are:

\begin{array}{r|rr|r} \text{Hits} & \text{MAM} & \text{DD} & \text{Difference} \\ \hline 0 & 0.6857 & 0.7434 & 0.0577\\ 1 & 0.2713 & 0.2322 & -0.0391 \\ 2 & 0.0402 & 0.0236 & -0.0166\\ 3 & 0.0027 & 0.0008 & -0.0019\\ 4 & 0.0001 & 0.0000 & -0.0001 \\ \end{array}

The results are also better for DD without advantage.

However,

With Defensive Duelist you will lose your reaction on your turn with a probability of 0.4780 (i.e. just under half the time) which means no opportunity attacks (or other Reactions) until your next turn. Booming Blade only locks down 1 foe (if you hit), Opportunity Attacks threaten another and you are giving this up half the time.

The Code

MAMAC: 20
DAC: 19
MOD: +5
ATTACKS: 4
DODGEMOD: -3

MAMHIT: [lowest 1 of 2d{0:1, 0:(MAMAC-MOD) - 2, 1: 20 - (MAMAC-MOD), 1:1}]
DHIT: [lowest 1 of 2d{0:1, 0:(DAC-MOD) - 2, 1: 20 - (DAC-MOD), 1:1}]
DODGEHIT: [lowest 1 of 2d{0:1, 0: (DAC-MOD) - 2, -1:-DODGEMOD, 1: 20 - (DAC-MOD-DODGEMOD), 1:1}]

function: N:n dodge D:n {
if N=1 {result: dDHIT}
if D=-1 {result: 0 + d[N-1 dodge DHIT]}
result: D + d[N-1 dodge DODGEHIT]
}

output ATTACKSdMAMHIT named "Medium Armor Master"
output [4 dodge DODGEHIT] named "Defensive Duelist"