Physical Damage Calcuation

Physical damage is calculated by multiplying your base damage with attack/defense function
Damage = Base Damage x pDIF



Base Damage
Base damage is the sum of these following things
  • Weapon Damage Rating (D)
  • Ammo Damage (if the calculation is for ranged attack) (aD)
  • Function of your STR - monster VIT (fSTR or fSTR2)
  • Weapon Skill secondary attribute modifier (WSC) (when performing weapon skills only)

  • So, base damage is calculated as follow:
    For Normal Attack: Base Damage = D + (aD) + fSTR(2)
    For Weapon Skills: Base Damage = floor( (D + (aD) + fSTR(2) + WSC) x fTP)



    Weapon Rank, fSTR and fSTR2
    This is the additional damage bonus / penalty from the difference of your STR and monster VIT. The cap value is related to weapon base damage.

    Weapon Rank
    Weapon rank is calculated by floor(Weapon Damage Rating/9)


    fSTR and fSTR2
    Let dSTR is the value gotten by subtracting your STR by mob VIT : dSTR = your STR - monster VIT.
    and WRANK is the Weapon Rank of the weapon.

    fSTR is the damage bonus from dSTR for melee attack
    fSTR2 is the damage bonus from dSTR for ranged attack

    For ranged attack, it takes roughly 2~3 more STR to increase fSTR2 by 1 depending on how big is dSTR value
    For melee attack, fSTR is calculated by fSTR2/2. So, melee attack needs roughly 4~6 STR to increase fSTR value by 1

    When STR-VIT value is high,
    fSTR2 can be approximated by (dSTR+4)/2 and
    fSTR can be approximated by (dSTR+4)/4

    fSTR /fSTR2 upper and lower cap values are affected by weapon rank:
    The lower cap of fSTR is -WRANK
    The lower cap of fSTR2 is -WRANK x2.
    These lower cap values occur at : dSTR = -(7 + WRANK x2) x2
    Exceptions:
  • Rank 0 melee weapons have lower cap value -1 instead of 0, and ranged ones have the value -2
  • Rank 1 ranged weapons have lower cap value -3.


  • The upper cap of fSTR is WRANK+8 , while
    The upper cap of fSTR2 is (WRANK+8) x 2
    These upper cap values occur at : dSTR = (14 + WRANK x2) x2
  • See the fSTR2 table over here




  • Level Correction Function and pDIF
    This is the main multiplier of your base damage, it dependent on the level difference, your attack, and mob defense

    Level Correction Function
    Level Correction function modify your (ranged) attack / monster defense ratio before passing it to the pDIF function

    Let's say you have 400 attack/ ranged attack and the monster have 400 defense. So your (r)atk/def ratio is 1.
    If you the monster has a higher level than you, then level correction ratio is needed.
    Otherwise, when fighting EM monster or lower, your atk/def ratio will be left as is before plugging them into the function.
    (In other words, level correction value is 0)


    For this example, Let's say you are fighting level 81 monster and your own character is a level 75 character.
    Let Ratio as the value of your (r)atk divided by monster defense
    Melee cRatio = Ratio - 0.050 x level difference
    Ranged cRatio = Ratio - 0.025 x level difference


    So after the level correction, your melee attack ratio is 0.7 and your ranged attack ratio is 0.85

    pDIF
    pDIF is the attack/defense function taking your (level corrected) Attack and Defense ratio.
    The min and max value of pDIF is what makes your damage fluctuate.

    Melee pDIF and Ranged pDIF have different formulas :

    Melee Attack:
    max pDIF have the formulas :
    cRatio Range
    fMax Function Value
    0 ≤ cRatio < 6/12
    fMax(cRatio) = 0.4 + 6/5 x cRatio
    6/12 ≤ cRatio ≤ 10/12
    fMax(cRatio) = 1
    10/12 < cRatio ≤ 24/12 fMax(cRatio) = 1 + 6/5 x (cRatio - 10/12)

    and Min pDIF have the formulas :
    cRatio Range
    fMin Function Value
    0 ≤ cRatio < 15/12 fMin(cRatio) = 6/5 x (cRatio - 5/12)
    if fMin<0 → fMin = 0
    15/12 ≤ cRatio ≤ 18/12 fMin(cRatio) = 1
    18/12 < cRatio ≤ 24/12 fMin(cRatio) = 1 + 6/5 x (cRatio - 18/12)
    When cRatio exceeds 2.0, cRatio is 2.0 (capped for melee)

    Melee Critical Hit
    When critical hit occurs, your pDIF will be raised by 1 and the max pDIF cap is 3.0 instead of 2.4
    Examples :
    When your pDIF is 0.4 and you score a critical hit, your pDIF is raised to 1.4
    When your pDIF is 2.3 and you score a critical hit, your pDIF is raised to 3.0
    When your pDIF is -0.4 and you score a critical hit, your pDIF is raised to 0.6, but your normal attack will have pDIF=0
  • See the melee pDIF graph


  • for Ranged Attack,
    cRatio Range
    fMax Function Value
    0 ≤ cRatio < 0.9 fMax(cRatio) =10/9 x cRatio
    0.9 ≤ cRatio ≤ 1.1 fMax(cRatio) = 1
    1.1 < cRatio ≤ 3.0 fMax(cRatio) = cRatio

    cRatio Range
    fMin Function Value
    0 ≤ cRatio < 0.9 fMin(cRatio) = cRatio
    0.9 ≤ cRatio ≤ 1.1 fMin(cRatio) = 1
    1.1 < cRatio ≤ 3.0 fMin(cRatio) = 1 + 20/19 x (cRatio - 1.1)
    When cRatio exceeds 3.0, cRatio is 3.0 (capped for ranged)

    Ranged Critical Hit
    Ranged critical hit always multiply your pDIF by 1.25
    Example :
    When your pDIF is 3.0 and you score a critical hit, your pDIF will be 3.75
  • See the ranged pDIF graph


  • Notes
    Ratio, cRatio, and pDIF value is calculated using 3 digit truncation.



    Weapon Skills Base Damage
    When you perform Weapon skills, your base damage will be increased by additional value of WSC and will be multiplied by TP multiplier fTP

    WSC
    WSC is the Weapon Skill secondary attribute modifier. It is an additional base damage when you perform weapon skills.
    Usually every weapon skills have 1 or 2 default stats for WSC.
    For example, All archery WS have STR_16% and AGI_25% which means 16% of your STR and 25% of your AGI will be calculated as base damage when performing all archery WS

    There's variable α(Alpha) which scales down your WSC value as you level up higher.
    Here's the list of alpha for each level (range)

    Level Range Alpha Value
    Level 1~5 1.00
    Level 6~11 0.99
    Level 12~17 0.98
    Level 18~23 0.97
    Level 24~29 0.96
    Level 30~35 0.95
    Level 36~41 0.94
    Level 42~47 0.93
    Level 48~53 0.92
    Level 54~59 0.91
    Level 60~61 0.90
    Level 62~63 0.89
    Level 64~65 0.88
    Level 66~67 0.87
    Level 68~69 0.86
    Level 70~71 0.85
    Level 72~73 0.84
    Level 74~75 0.83

    So, the WSC calculation is
    WSC = floor ( floor((stat_percentage_1 x stat_1) + (stat_percentage_2 x stat_2)) x α )



    fTP
    fTP is the Base Damage multiplier when you perform weapon skills
    For multi hit weapon skill, fTP of 2nd hit and the following hits will have value 1.00

    fTP of Dual Wield and Double attack
    Dual Wield and Double attack will add another extra hit into your WS
    For example : Dancing Edge and Rampage are 5-hit WS. when the user sub Ninja or when double attack effect kicked in, the damage and TP gain will be counted as 6-hit WS. However, the added attack will have fTP= 1.0 as well as the consecutive attack.
  • See the WSC and fTP Stats list for every weapon skill here




  • Miscellaneous:
    THF Main Sneak Attack and Trick Attack
    For THF Main, during the activation of Sneak Attack and Trick Attack, the total DEX and the total AGI of your character is calculated as base damage respectedly.
    For Sneak Attack:
    Damage = (Base Damage + Total DEX) x critical hit pDIF

    For Trick Attack:
    Damage = (Base Damage + Total AGI) x pDIF

    For Sneak Attack and Trick Attack:
    Damage = (Base Damage + Total DEX + Total AGI) x critical hit pDIF

    For Sneak Attack and Trick Attack enabled WS:
    Damage = ( Base Damage + Total DEX + Total AGI) x critical hit pDIF

    Rogue's Armlet+1 gives 15% AGI bonus during trick attack
    There are still some consistency check need to be done with Studio Gobli damage calculator

    It has been tested by Kalia from Valefor that Triple damage proc from Mandau only affects the base damage and not applied to AGI and DEX bonus during Sneak Attack / Trick Attack activation.


    n-fold Damage Proc from Stage-5 Relic Weapons
    Some stage-5 relic weapons have non-integer n-fold damage multiplier, such as Great Katana's, Great Sword's, Sword's, etc.
    Please note that this multiplier only be applied on base damage, and will truncate the base damage after the multiplication.

    For example:
    Amanomurakumo have base damage 88.
    Under capped condition fSTR is 17.
    So, the total base damage is 105.
    With 2.5-fold damage modifier, the base damage will become 262.5, Truncate it, then you'll get 262.
    After that, proceed multiplying them with pDIF as usual. (i.e. if your pDIF is capped critical-hit (3.0), then your damage will be 262 * 3.0 = 786)


    Jump Damage Calculation
    It seems that Jump's damage is calculated the following way:
    Damage = (D + fSTR + WSC)*pDIF
    where WSC is the secondary modifier of Jump : VIT_50%, with some exception that after mutliplying the number with α, the number is rounded up instead of truncated.