Damage reduction in the game usually works either by multiplication (prot evil) or by summing (resists). The weird thing with resist-based damage is that for, say, resist slash, each additional point of resistance brings more benefit. The first +20 resist reduces your damage by 20%, but if you can add +20 resist while already having +60 resist, that additional +20 resist halves your damage (Ch'taren earth scholars could get their resist for particular damage types really high up).
I was thinking how to change this around so that stacking all sorts of damage reductions doesn't bring so large benefits that it becomes unbalanced. One "simple" way to change how damage reduction works is to only use multiplication, and to group damage reduction per source of damage reduction - so innate resists is one source, AC-based and equipment based resists is another source, and each spell or song buff is its own source. By multiplying resists per source, rather than adding them all up, you get rid of the odd situation where +resists becoming more valuable per point the closer you are to 100 resist. The final step is to count the number of sources of damage reduction you have on you, and incorporate that number into the final damage reduction calculation as well. Put it in the lore in that different magics are interfering with each other and thus becoming less effective, or something like that.
Example formula is this. Say you have sanc (each point of damage gets reduced to 0.6 damage points), and you have protection evil (each point of damage gets reduced to 0.75 damage points). Right now, these two are multiplied (I believe), so that for each point of damage 0.6 * 0.75 = 0.45 damage gets through. What I would suggest is to do
Code: Select all
Math/pow [damage reductions multiplied] ^ (Math/pow [number of damage reduction sources] ^ -1/3)
There is a small problem though. If you add a very weak damage reduction buff to a strong damage reduction (say 5 resist next to sanc), you might actually have a poorer overall damage reduction then without the buff. Adding 10 resist seems to at least have a netto positive effect. So maybe the formula needs some tweaking, or the code needs to do some math to not make things worse for the character than the best combination of buffs.