Jump to content


Sign In or Register to gain full access to our forums.

- - - - -

Blog Post - Duende - 1/23/18 - Spell Damage Caps

  • Please log in to reply
No replies to this topic

#1 Duende


    Advanced Member

  • Administrators
  • 1619 posts

Posted 30 January 2018 - 08:51 PM

Posted:     Tue Jan 23 16:38:06 2018

We recently completed one of the Immortal for a Day days, which was productive and enlightening, and will be the topic of a later blog post. However, one of the topics that arose centered around some observed damage not matching the speculated damage, and possible reasons for it.  We spent a few hours debugging and correlating damage sources and damage output, and discovered that while the complaint was accurate, it was based on something expected and described, but which might be currently underappreciated.  So the topic of this blog post will be magical damage caps.  
We have about 100 spells that qualify as nukes; spells whose primary effect is a one-time burst of damage.  Nearly all spells differ in some way in their implementation, but the general shape of them is thus:
All nukes have a base damage amount and a damage type, visible in their help files, like `*Deals flames (3.1 base) damage.`.  That base damage receives a generic 'adjustment', which looks like halving damage in pk, reducing damage further in pk-half-damage rooms, increasing the damage on the faerie plane dealt from faeries to non-faeries, etc.  There is an additional damage coefficient which multiplies the damage by a lookup based on the caster's level; this coefficient ranges from *2 at level 1, to *80 at level 100, to *180 at 250, to *550 at level 500.  In our example spell Fireball, there is an additional 'fireballs' multiplier, which is typically 1 but has a (caster level/350) chance to have 2 fireballs, effectively dealing double damage.  Fireball's skillpower is to increase the damage by (skillpower%), so that also modifies the amount of damage.  The amount of damage dealt is then fed into saves-against checks, which has a ton of components.  
The saves-against checks for fireball takes the product of the spell's damage type and adds the caster's bonuses: (+fire-damage-prcnt).  After adding the caster's bonuses, it takes into account all of the victim's bonuses: resistance to fire (-25); vulnerability to fire (+25); global save bonuses; resistance stats (-fire-prcnt); SVS (too complicated for this).  
After all of the bonuses are calculated, that is the final damage output from the fireball spell, and similar occurs with all other nukes.  However, the 'final damage output' is then subject to additional constraint- for sanity's sake, and to prevent anything really crazy from occurring, skills have individual damage caps.  Because one of the first calculations in determining damage places heavy emphasis on caster level, it's totally plausible that a mis-set skill could deal enormous amounts of damage incorrectly, and the caps were presumably meant to prevent that.  Unfortunately, while they succeed in that, they were probably mis-tuned, so instead of only coming into play at 150% of the anticipated damage output or something, lots are set at 80% of the damage output, meaning a level 200 would deal the same damage with the spell as an archon.  Fixing this is relatively straightforward, but won't be possible for a few months, as it'll take lots of testing and refinement.  
We could remove damage caps, but that would have adverse effects on players, as exemplified by a few spot-checks.  It turns out that firebolt hurts a lot, but is capped at dealing 5k damage- it turns out without the damage caps, it would deal about 12k damage, a hit which few could survive.  Tweaking the values upward would help make the math add up, but that benefit isn't worth the risk of commensurate increased damage, like the aforementioned firebolt.  We could determine what, for each spell, the intersection of damage-cap at archon and base-damage would be, but that would lower the damage for lower levels in ways that may not be desirable.  We may decide the caps are weird as-is, and simply display messages to players when they hit the caps, the way that imms can see with debug right now.  The eventual answer probably lies somewhere in the middle, but requires more study regardless.  Because that study will require time, and the implementation moreso, and we're probably a good month+ away from next reboot, the easy answer is to simply publicize the caps, and let everyone determine how to proceed on their own.  I'm sure there'll be some feedback on this, which #troll might be the best outlet for.  
acid blast:         500      acid breath:           850     abjure:              450
air evocation:      500      acid mist:             2000    airblast:            1500
animate weapon:     3500     backstab:              3500    bash:                5000
battle rage:        1000     burning ember:         2250    bathe:               500
bleakness:          1000     call lightning:        1200    cause light:         200
cause serious:      350      chill touch:           350     cure blindness:      750
cure critical:      750      cure light:            350     cure serious:        550
chain lightning:    1450     circle of thorns:      1000    conjure boulder:     1600
channel faith:      1200     conjure ironbolt:      1750    charge:              1000
cure mutilation:    750      diseased cloud:        2000    deafen:              500
divine calling:     3600     energy drain:          500     earth invocation:    350
earth evocation:    300      extinction:            1250    energy orb:          500
ember carom:        512      flame wind:            1000    frost:               600
fireball:           575      fire breath:           900     frost breath:        950
feeding:            850      fire evocation:        600     firebolt:            5000
famine:             650      flintstrike:           999     fungal growth:       1000
gas breath:         750      geisteblitz:           2000    grapple:             1500
harm:               650      heal:                  500     high explosive:      2000
herald death:       3500     harrow:                2000    ice storm:           1900
ice wind:           1000     icebolt:               4500    ice whip:            1400
iceball:            1500     kill:                  1400    kick:                750
lightning bolt:     475      lightning breath:      1000    lightning evocation: 2500
lightning shroud:   1750     leech:                 650     landslide:           1200
minerals evocation: 350      magic dart:            100     magic bomb:          2040
mutilate:           750      necrotic explosion:    225     one with the forest: 750
paralyze:           150      poison gas:            350     pestilence:          100
pustulate:          1500     psychic rebellion:     3500    quicksilver blast:   4500
refresh:            250      reflective fireball:   1750    spark:               160
shocking grasp:     125      shadow light:          750     soul sacrifice:      5000
sweep:              1500     summon stake:          3600    searing touch:       1000
thunderclap:        400      tremor:                900     telekinetic punch:   1000
telekinetic pierce: 1000     telekinetic explosion: 1250    telekinetic bash:    850
thunderstorm:       1900     telekinetic wave:      1150    tremolo:             1000
water evocation:    700      waterspout:            350     wrath of the bear:   1250