exp formula(s)

Discussion in 'General Discussion' started by nomade, Oct 8, 2024.

  1. nomade
    Offline

    nomade Well-Known Member

    Joined:
    Jun 22, 2021
    Messages:
    251
    Likes Received:
    310
    Location:
    Forest of Dead Trees IX
    Country Flag:
    Level:
    A
    This is my personal experiments attempting to find the rules of exp sharing after some time passed.
    All the formulas listed below are limited to be a theory. Keep in mind they might be wrong.
    • By the time posting this I only have done tests on Skelegon - HP: 80,000 EXP: 4,500 and a few other mobs.
      I use Skelegon as main target of verification in this post.​
    • There is sometimes a tiny exp discrepancy (+- 1-2) between these calculation results and the ground truth, the real exp you get.
      This is I'd assume derived from how exactly the exp given to players is implemented in the code, the cascaded calculations, numerical operations, and maybe the loss of precision from data type conversion or something related to program interpreting the number. Chances are I'm wrong here.​
    • There're situations haven't been tested, such as:
      What if the mob recovers hp, for example Krex and Vikerola, how to calculate dmg% in this case.
      If you're below -5 levels of the mob and do damage. (#5)
      If you're below -5 levels of the mob and leeching from an attacker within 5 levels gap.
      high level bosses.​
    • Leech Conditions after Update #94 28/01/25 :
      1. leecher level >= -5 mob level : ok
      2. leecher level < -5 mob level and >= -5 damage dealer level : damage dealer needs to be >= -29 mob level (therefore minimum leech level requirement is >= -34 mob level)
      * any damage dealer that's < -29 mob level won't get exp​



    Here exp formulas are listed case by case, all without HS bonus (1.5x).
    All final exp go through a Floor(exp), this step is omitted in formula.

    Definition:

    - mobexp = Monster base exp * 3.2 server rate , 14400 for Skelegon
    - cptsize = factor of party size =
    (a) (1.1 + 0.05 * N) / (N + 1) if N >= 2 (N := party size)
    (b) 0.5 if N = 1 (1 man pt)
    or
    Code:
    0.5    when N = 1
    0.4    when N = 2
    0.3125 when N = 3
    0.26   when N = 4
    0.225  when N = 5
    0.2    when N = 6
    
    - lv = leecher's level (who did 0 damage)
    - avglv = Floor(average party level)
    - dmg% = damage dealt by single attacker / total monster hp
    - party total dmg% = sum of dmg% among all attackers in pt


    1. All damages come from only 1 party
    Updated: Also tested on Wu-Ling Yaoseng(shao) with error of 1-2 (<0.001%)​

    for damage dealer:
    exp = mobexp * cptsize * (1 + dmg%)

    for leecher:
    exp = mobexp * cptsize * Min(lv/avglv, 1)

    damages
    pt1:
    attacker Lv139 54221/80000 (10699 + 16667 + 12537 + 14308)
    attacker Lv200 25779/80000 (80000 - 54221)
    leecher Lv190
    leecher Lv200
    leecher Lv142

    exp gain (theoretical / real exp)
    pt1:
    cptsize = 0.225
    avglv = Floor( (139 + 190 + 142 + 200 + 200) / 5 ) = 174
    attacker Lv139 14400 * 0.225 * (1 + /80000) = 5435.95 / 5435
    attacker Lv200 14400 * 0.225 * (1 + /80000) = 4284.04 / 4283
    leecher Lv190 14400 * 0.225 * Min(190/174, 1) = 3240 / 3239
    leecher Lv200 14400 * 0.225 * Min(200/174, 1) = 3240 / 3239
    leecher Lv142 14400 * 0.225 * Min(142/174, 1) = 2644.13 / 2643

    2. Damages done by multiple parties

    for damage dealer:
    exp = mobexp * cptsize * (party total dmg% + dmg%)

    for leecher:
    exp = mobexp * cptsize * Min(lv/avglv, 1) * party total dmg%

    damages
    pt1:
    attacker Lv200 46025/80000
    attacker Lv139 17075/80000

    pt2:
    attacker Lv190 2063/80000 (609 + 1454)
    leecher Lv142

    pt3:
    attacker Lv200 14837/80000 (80000 - 46025 - 2063 - 17075)

    exp gain (theoretical / real exp)
    pt1:
    cptsize = 0.4
    avglv = Floor( (139 + 200) / 2 ) = 169
    attacker Lv200 14400 * 0.4 * (63100/80000 + 46025/80000) = 7857.00 / 7856
    attacker Lv139 14400 * 0.4 * (63100/80000 + 17075/80000) = 5772.60 / 5771

    pt2:
    cptsize = 0.4
    avglv = Floor( (190 + 142) / 2 ) = 166
    attacker Lv190 14400 * 0.4 * (2063/80000 + 2063/80000) = 297.07 / 297
    leecher Lv142 14400 * 0.4 * Min(142/166, 1) * 2063/80000 = 127.06 / 127

    pt3:
    cptsize = 0.5
    attacker Lv200 14400 * 0.5 * (14837/80000 + 14837/80000) = 2670.66 / 2670

    3. If you are not in any pt

    exp = mobexp * 0.8 * dmg%

    4. If you are not in any pt and Last hit

    exp = mobexp * (0.8 * dmg% + 0.2)

    damages
    pt1:
    attacker Lv190 4202/80000 (113 + 1883 + 2206)
    leecher Lv139
    leecher Lv142

    unpt'd:
    Lv200 40441/80000
    Lv200 Last hit 35357/80000 (80000 - 4202 - 40441)

    exp gain (theoretical / real exp)
    pt1:
    cptsize = 0.3125
    avglv = Floor( (139 + 190 + 142) / 3 ) = 157
    attacker Lv190 14400 * 0.3125 * (4202/80000 + 4202/80000) = 472.72 / 472
    leecher Lv139 14400 * 0.3125 * Min(139/157, 1) * 4202/80000 = 209.26 / 209
    leecher Lv142 14400 * 0.3125 * Min(142/157, 1) * 4202/80000 = 213.78 / 213

    unpt'd:
    Lv200 14400 * (0.8 * 40441/80000) = 5823.50 / 5823
    Lv200 Last hit 14400 * (0.8 * 35357/80000 + 0.2) = 7971.40 / 7971

    5. If someone in pt died and stay in the map

    N of cptsize and average party level degrade to those who are alive.
    e.g. In a 3 man pt 1 member is dead, cptsize = (1.1 + 0.05 * 2) / 3 = 0.4 instead of (1.1 + 0.05 * 3) / 4 = 0.3125
    e.g. In a 4 man pt 3 members are dead, cptsize = 0.5

    dmg% and party total dmg% remain unchanged (meaning, dead attackers' dmg% still count into party total dmg%)

    damages
    pt1:
    attacker Lv139 1/80000 (80000 - 79999)
    attacker Lv190 dead 79999/80000
    leecher Lv142

    exp gain (theoretical / real exp)
    pt1:
    cptsize = 0.4
    avglv = Floor( (139 + 142) / 2 ) = 140
    attacker Lv139 14400 * 0.4 * (80000/80000 + 1/80000) = 5760.07 / 5759
    leecher Lv142 14400 * 0.4 * Min(142/140, 1) = 5760 / 5759

    6. If someone in pt left the map

    Anyone leaving the map is seen as outside pt. N of cptsize decreases and his dmg% is deducted from party total dmg%.
    -----

    Another experiment
    damages
    [​IMG]
    [​IMG] [​IMG]
    [​IMG]
    pt1
    attacker Lv200 dead 16547/80000 (6016 + 10531)
    attacker Lv142 leave map 4709/80000
    leecher Lv139 +HS

    pt2
    attacker Lv200 +HS 9612/80000
    attacker Lv190 +HS leave pt and Last hit 49132/80000 (80000 - 16547 - 4709 - 9612)

    exp gain
    [​IMG]
    [​IMG]
    [​IMG]
    pt1
    cptsize = 0.5
    avglv = 139
    leecher Lv139 14400 * 0.5 * Min(139/139, 1) * 16547/80000 * 1.1 = 1638.15 / 1638
    pt2
    cptsize = 0.5
    attacker Lv200 14400 * 0.5 * (9612/80000 + 9612/80000) * 1.1 = 1903.17 / 1903

    unpt'd
    Lv190 Last hit 14400 * (0.8 * 49132/80000 + 0.2) * 1.1 = 10950.50 / 10950


    Extra

    - To reflect on one of Sylafia's finding: leecher exp is capped at half of the exp mage gets?
    Yes when the single mage does 100% damage on mobs. In this situation exp formulas can be simplified as following:
    mage exp = mobexp * cptsize * (1 + dmg%) = mobexp * cptsize * 2
    leecher exp = mobexp * cptsize * Min(lv/avglv, 1), max at leecher level >= average party level, exp = mobexp * cptsize * 1



    In your dream, beside a fire in a great hall you start dancing with balrog. You think about those people you met who have quit, who are banned, who are still active on the field, their words, those times you've made together, and the exp formulas. Sometimes Rich Text Editor comes to your dream, throwing you unexpected BBcode tags. When you see those weird Spoilers out of nowhere you realize it's not reality. You wake up, open the BBcode Editor, say shiiit and start to remove those dummy tags manually.
     
    Last edited: Jan 28, 2025
    LichWiz, Crags, chainyu0220 and 3 others like this.
  2. Zenoooo
    Offline

    Zenoooo Donator

    Joined:
    Apr 2, 2015
    Messages:
    1,467
    Likes Received:
    954
    Gender:
    Female
    Country Flag:
    IGN:
    Jan 2015
    Level:
    -
    Guild:
    Oct 2017
    should be in Guides forum
     
    Last edited: Oct 8, 2024
  3. NehZu
    Offline

    NehZu Donator

    Joined:
    Dec 10, 2023
    Messages:
    509
    Likes Received:
    1,012
    Gender:
    Male
    Country Flag:
    you two would make a nice couple.
     
  4. nomade
    Offline

    nomade Well-Known Member

    Joined:
    Jun 22, 2021
    Messages:
    251
    Likes Received:
    310
    Location:
    Forest of Dead Trees IX
    Country Flag:
    Level:
    A
    because it's not accurate and I hope there will be some discussion

    ??
     
  5. nomade
    Offline

    nomade Well-Known Member

    Joined:
    Jun 22, 2021
    Messages:
    251
    Likes Received:
    310
    Location:
    Forest of Dead Trees IX
    Country Flag:
    Level:
    A
    1-1-a. 3 attackers pt, 1 attacker lower than -5 level of mob
    tested on NMM with error of ~1%
    tested on Plow Ox with error of 1-2 (1%-5%)
    +HS (1.5)

    main attacker:
    cptsize = 0.4
    exp = mobexp * cptsize * ( (0.8*[damage from low level attacker]*1.5 + [damage from another attacker]*1.5 + [damage]*1.5 )/mobhp + [damage]*1.5/mobhp ) * event bonus

    low level attacker:
    cptsize = 0.4
    exp = mobexp * cptsize * ( 0.8*[damage]*1.5/mobhp + 0.8*[damage]*1.5/mobhp ) * event bonus


    1-1-b. 2 attackers pt, 1 attacker lower than -5 level of mob
    tested on Plow Ox with error of 0-1
    tested on Dunas v2 with error of 1 (< 0.001%)
    +HS (1.5, 1.1)

    main attacker:
    cptsize = 0.5
    exp = mobexp * cptsize *( (0.8*[damage from low level character]*1.5 + [damage]*1.1)/mobhp + [damage]*1.1/mobhp ) * event bonus

    low level attacker:
    cptsize = 0.5
    exp = mobexp * cptsize * ( 0.8*[damage]*1.5/mobhp + 0.8*[damage]*1.5/mobhp ) * event bonus
     
    Last edited: Dec 27, 2024
    chainyu0220 likes this.
  6. LichWiz
    Offline

    LichWiz Well-Known Member

    Joined:
    Jun 21, 2016
    Messages:
    2,091
    Likes Received:
    4,580
    IGN:
    IronShichika
    Level:
    200
    Guild:
    Ironman
    Small insight regarding the slight inconsistency of the results:
    While I made myself a sheet to calculate player range, I discovered that the game basically rounds down numbers at almost all steps of the calculation [yes, specifically down]. Before I just did normal rounding, but after applying rounding down to all my equations, the numbers came out exactly as they were in-game.
    For example, when you have Echos active, the game takes your total WA, multiplies it by 1.04, then rounds the result down. Even the final range result is rounded down in the end.
    So maybe if you'll write all these formulas in excel, and use "ROUNDOWN" command on all calculations with multiplications or divisions, it will result in numbers closer to results in game?
     
    Kheb, nomade and Sylafia like this.
  7. Green Mind
    Online

    Green Mind Donator

    Joined:
    Jan 11, 2022
    Messages:
    647
    Likes Received:
    908
    Gender:
    Male
    So if you have a part of attackers + bishop (who does no damage)
    all attackers suicide except only one that needs exp
    Is it correct that bishop should stay in party alive with HS active rather than leave, since party size is treated as 2 in this case (so HS gives more %)? Because bishop leaving will essentially turn it into a 1 man party?

    I did two rounds of NMM like this
    level 200 attackers x2, level 177 attacker that needs exp, bishop

    day 1: level 200 attackers suicide, bishop HS and stays in party, 32m exp
    day 2: level 200 attackers suicide, bishop HS and leaves party, 29m exp

    Wondering if this makes sense based on your experience.
     
  8. Sylafia
    Offline

    Sylafia Donator

    Joined:
    Jan 2, 2022
    Messages:
    1,696
    Likes Received:
    6,832
    Gender:
    Female
    Country Flag:
    IGN:
    Sylafia
    Level:
    200
    Guild:
    FlatEarth
    Technically what would be optimal is to suicide on all but one besides the one that needs exp, and leave party on bishop I believe. Otherwise yes you'll want bishop in party to make HS 150% instead of 110%
     
    Green Mind likes this.
  9. nomade
    Offline

    nomade Well-Known Member

    Joined:
    Jun 22, 2021
    Messages:
    251
    Likes Received:
    310
    Location:
    Forest of Dead Trees IX
    Country Flag:
    Level:
    A
    yes in this case you'll want to have bishop in pt for more exp
    and the exps you provide match the math, assuming your level 177 attacker did 100-110m damage(, or 23%-25% damage)
    (if you have exact exp, we can know exact damage % from level 177 attacker)

    Code:
    let mobexp = 43_000000;
    let mobhp = 430_000000;
    let cptsize = (N) => {
        return N === 1 ? 0.5 : (1.1 + 0.05*N)/(N+1);
    }
    
    // day1
    let hs = 1.5;
    let dmg_lv177 = 110_000000;
    console.log( mobexp * cptsize(2) * ( (mobhp*hs)/mobhp + dmg_lv177*hs/mobhp) );
    
    // day2
    hs = 1.1;
    dmg_lv177 = 110_000000;
    console.log( mobexp * cptsize(1) * ( (mobhp*hs)/mobhp + dmg_lv177*hs/mobhp) );
    
    Code:
    32400000.000000007
    29700000.000000004
    
     
    Green Mind likes this.
  10. Green Mind
    Online

    Green Mind Donator

    Joined:
    Jan 11, 2022
    Messages:
    647
    Likes Received:
    908
    Gender:
    Male
    Thanks for the replies! I also need to try Sylafia's suggestion and see if I've been doing it wrong for MONTHS... -.-'
     
    Sylafia likes this.
  11. Crags
    Offline

    Crags Donator

    Joined:
    Aug 21, 2023
    Messages:
    189
    Likes Received:
    259
    Country Flag:
    IGN:
    Crags
    Level:
    200
    Guild:
    Bougie
    if you attack on the character that needs exp it's trivial:

    mobexp*cptsize(1)*(1 + dmg%)*hs(1) < mobexp*cptsize(2)*(1 + dmg%)*hs(2)
    0.5*1.1 < 0.4*1.5
    true for all dmg%

    but if both do no damage:

    mobexp*cptsize(1)*1*hs(1) < mobexp*cptsize(2)*(lv/partylv)*hs(2)
    0.5*1.1 < 0.4*(lv/partylv)*1.5
    lv > 0.91*partylv

    so it's better if you're above 91% the average party level on the character that needs exp

    also it's always better exp to attack than to leech, for any party size and level
     
    Last edited: Jan 30, 2025
    Green Mind and Sylafia like this.
  12. nomade
    Offline

    nomade Well-Known Member

    Joined:
    Jun 22, 2021
    Messages:
    251
    Likes Received:
    310
    Location:
    Forest of Dead Trees IX
    Country Flag:
    Level:
    A
    note that bishop contributes to average party level too so left hand / right hand average party level will be 2 different terms
    well actually I was mistaking something
     
    Last edited: Jan 30, 2025
    Crags likes this.
  13. Crags
    Offline

    Crags Donator

    Joined:
    Aug 21, 2023
    Messages:
    189
    Likes Received:
    259
    Country Flag:
    IGN:
    Crags
    Level:
    200
    Guild:
    Bougie
    you were right, i just edited (lv/partylv) to 1 (party of 1) on the left-hand side to make things clearer
     
    nomade likes this.
  14. nomade
    Offline

    nomade Well-Known Member

    Joined:
    Jun 22, 2021
    Messages:
    251
    Likes Received:
    310
    Location:
    Forest of Dead Trees IX
    Country Flag:
    Level:
    A
    Proposal of calculating VL party damages

    If you ever look into the exp formula for damage dealers, you can find that if adding up every party member's exp from killing a mob, we get the sum = mobexp * cptsize(N) * (N+1) * party damage %, in which N = # damage dealers in the party

    From this equation we are able to calculate:
    The damage dealed by a party (in percentage) = exp sum{from every member's screenshot, need to /1.5 if there's HS} / (mobexp * cptsize(N) * (N+1))
     
    Zenoooo likes this.
  15. Zenoooo
    Offline

    Zenoooo Donator

    Joined:
    Apr 2, 2015
    Messages:
    1,467
    Likes Received:
    954
    Gender:
    Female
    Country Flag:
    IGN:
    Jan 2015
    Level:
    -
    Guild:
    Oct 2017
    I was wondering if the leecher does some damage (even 1 damage), what exp formula would be cuz it seems to be different.

    So I did experiment on Shao leech.

    Not hitting yaoseng: exp ~ 27m (day 1 exp gain on 163 se and 157 bucc)
    Hitting yaoseng: exp ~ 30m (day 2 exp gain on 163 se and 157 bucc)
    Party 1: 200 NL, 199 hero, 163 SE
    Party 2: 200 shad, 189 bucc, 157 bucc
    200 NL and Shad commit suicide.

    Formula 1 gives them about 10% more exp. So indeed if you hit the boss/mob (could be doing 1 damage), you could get more exp.
     
    Last edited: May 14, 2025

Share This Page