It would depend entirely on the system and mechanics of the resistance. It would also likely need an overhaul of a sheets built in macros or a GM willing to use universal and therefore customisable macros. While doable in theory it would likely be a LOT more work than simple mental arithmetic. If the issue instead is remembering to factor in resistance when applying damage I would recommend having an attribute that stores the resistance types and amending attack macros to whisper that info to the DM and/or target. For my 3.5e game for example I have the following for attack macros: !power {{ --format|attack --emote|@{selected|token_name} attacks @{target|token_name} --charid|@{selected|character_id} --name|@{selected|weapon1name} --leftsub|@{selected|weapon1type} --rightsub|Crit: x@{selected|weapon1critmult} ?{Attack Type?| Standard, --Standard Attack:&#124;[[ [$att] 1d20 + @{selected|bab} + @{selected|size} + @{selected|weapon1stat} + @{selected|weapon1enh} + @{selected|bar3} + @{selected|weapon1focus} + @{Buff|attbuff} + (?{Flank?&#124;No&#44;0&#124;Yes&#44;1&#125;*2) ]] vs [[ [$tac] @{target|armorclass} +0d0 ]] AC --?? $att.base == 1 ?? !fumble&#124;[[ 1t[misstable] ]] ^^ **Fumble Check:** [[ [$fbl] 1d20 ]] --?? $att.base == 1 AND $fbl.base == 1 ?? !fumbled&#124;[[ 1t[Fumble] ]] --?? $att.base <> 1 AND $att.total < $tac.total ?? !miss&#124;[[ 1t[misstable] ]] --?? $att.base <> 1 AND $att.total >= $tac.total OR $att.base == 20 ?? !hit&#124;[[ 1t[hittable] ]] ^^ [[ 1@{selected|weapon1damage} + @{selected|bar2} + @{selected|weapon1damagestat} + @{selected|weapon1enh} + @{selected|weapon1specialize} + @{Buff|dambuff} ]] @{selected|weapon1type} damage! --?? $att.base >= @{selected|weapon1critmin} ?? Critical Threat:&#124; [[ [$crit] 1d20 + @{selected|bab} + @{selected|bar3} + @{selected|size} + @{selected|weapon1stat} + @{selected|weapon1enh} + @{selected|weapon1focus} + (?{Flank?&#124;No&#44;0&#124;Yes&#44;1&#125;*2) + @{Buff|attbuff} ]] --?? $att.base >= @{selected|weapon1critmin} AND $crit.total >= $tac.total ?? Critical Hit:&#124;Additional [[ [[ @{selected|weapon1critmult} -1 ]]@{selected|weapon1damage} ]] @{selected|weapon1type} damage! | BAB2, --BAB2:&#124;[[ [$att] 1d20 + @{selected|bab2} + @{selected|size} + @{selected|weapon1stat} + @{selected|weapon1enh} + @{selected|bar3} + @{selected|weapon1focus} + @{Buff|attbuff} + (?{Flank?&#124;No&#44;0&#124;Yes&#44;1&#125;*2) ]] vs [[ [$tac] @{target|armorclass} +0d0 ]] AC --?? $att.base == 1 ?? !fumble&#124;[[ 1t[misstable] ]] ^^ **Fumble Check:** [[ [$fbl] 1d20 ]] --?? $att.base == 1 AND $fbl.base == 1 ?? !fumbled&#124;[[ 1t[Fumble] ]] --?? $att.base <> 1 AND $att.total < $tac.total ?? !miss&#124;[[ 1t[misstable] ]] --?? $att.base <> 1 AND $att.total >= $tac.total OR $att.base == 20 ?? !hit&#124;[[ 1t[hittable] ]] ^^ [[ 1@{selected|weapon1damage} + @{selected|weapon1damagestat} + @{selected|weapon1enh} + @{selected|bar2} + @{selected|weapon1specialize} + @{Buff|dambuff} ]] @{selected|weapon1type} damage! --?? $att.base >= @{selected|weapon1critmin} ?? Critical Threat:&#124; [[ [$crit] 1d20 + @{selected|bab2} + @{selected|size} + @{selected|weapon1stat} + @{selected|weapon1enh} + @{selected|bar3} + @{selected|weapon1focus} + (?{Flank?&#124;No&#44;0&#124;Yes&#44;1&#125;*2) + @{Buff|attbuff} ]] --?? $att.base >= @{selected|weapon1critmin} AND $crit.total >= $tac.total ?? Critical Hit:&#124;Additional [[ [[ @{selected|weapon1critmult} -1 ]]@{selected|weapon1damage} ]] @{selected|weapon1type} damage! } --?? $att.base == 1 AND $fbl.base == 1 ?? soundfx1|_play,delay:2|critmiss --?? $att.base >= @{selected|weapon1critmin} AND $crit.total >= $tac.total ?? soundfx2|_play,delay:2|Critical Hit --Notes|@{selected|weapon1specialproperties} }} !power --name|SR: @{target|spellresistance} DR: @{target|damagereduction} --whisper|GM !playsound Sword Ok, most of the above is superfluous to this example but by always whispering the targets spell resistance and damage reduction to myself (as the GM) I can make sure that I always apply this as needed.