Neocron resistance calculation and how it really works - Part I

The resistance calculations are one central point in Neocron, but beside the nearings in NSkill not much is really known about it.
For NSkill 2 we are trying to get a better understanding of the formulae used in neocron, and naturaly this includes the way how the damage reductions are done in detail.

  1. Calculation of the raw damage value
    • Each weapontype has a definition which damagetype and how much of that damage will be caused - relatively. This value will be refered as “WeaponTypeEffect” in the following.
    • Each weapon has a link to the weapontype and a constant modifier that defines how strong that weapon is within this weapontype, this value will be refered as “WeaponEffect”
    • Depending on the character skills and the itemstats a “ItemDamagePercent” is calculated that shows the effectiveness of the specific item. This is the same dmg% shown in the info dialog (allthough containing the hidden decimal fractions)

    With this information we can calculate the raw damage a player will do on instant damages:

    RawDamage = WeaponTypeEffect * WeaponEffect * dmg%/100

  2. First possible reduction: PSI Resistance
    If the damage cause was a PSI module, then (and only then) the damage will be reduced dependend on the PSI-Resistance skill of the victim. So far so known.

    The formular used for this reduction is split into two cases (I will refer the result as SkillEffect)

    • PSR < 75:
      The reduction % is calculated as (PSR / 75.0) * 0.7 * 0.3 * 100

    • PSR >= 75:
      The reduction % is calculated as (pow((PSR-75) * 0.03125, 0.666) * 0.3 + 0.7) * 0.3 * 100

    This SkillEffect is hard-capped at 30%
    With PSR = 107 (*) the SkillEffect reaches 30% the first time. Any more points spent in to this skill have absolutely no effect for resisting PSI.

    So that the damage after the first reduction will be
    RawDamage * (1.0 - SkillEffect/100)

    (*) because in reverse : pow((30 / (100 * 0.3) - 0.7) / 0.3 , 1/0.666) / 0.03125 + 75 = 107

:edit: the PSR Formular >= 75 corrected (transfered faulty from script)
Thanks for pointing that out spiro
:edit: Updated the formular again with something i had overseen.

Leave a Reply

You must be logged in to post a comment.