Exp tables updated (fixes #1102)

* Fixed a problem that many of the exp requirements were 1 level off
* Removed custom level requirements from the default pre-re/re rAthena files
* Optimized the structure of these files; no more redundant data
* Added a few custom exp rows to import-tmpl/job_exp.txt that can optionally be used
* Updated 1st and 2nd trans job exp requirements to the new official values from 2015
* Fixed a bug that caused monsters to still give 1 base/job exp even though their exp in the db is 0
* Updated Summoner EXP requirements according to latest test results; as Summoner has exactly the same base exp requirements as 3rd classes starting at level 99, it will now use the same row
This commit is contained in:
Playtester 2016-03-25 18:36:16 +01:00
parent a40b0e5e33
commit a4aad69750
5 changed files with 66 additions and 71 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2454,8 +2454,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
#ifdef RENEWAL_EXP
int rate = pc_level_penalty_mod(tmpsd[i], md->level, md->status.class_, md->status.mode, 1);
if (rate != 100) {
base_exp = (unsigned int)cap_value(apply_rate(base_exp, rate), 1, UINT_MAX);
job_exp = (unsigned int)cap_value(apply_rate(job_exp, rate), 1, UINT_MAX);
if (base_exp)
base_exp = (unsigned int)cap_value(apply_rate(base_exp, rate), 1, UINT_MAX);
if (job_exp)
job_exp = (unsigned int)cap_value(apply_rate(job_exp, rate), 1, UINT_MAX);
}
#endif
pc_gainexp(tmpsd[i], &md->bl, base_exp, job_exp, false);

View File

@ -6333,13 +6333,15 @@ static void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsi
bonus += ( sd->sc.data[SC_EXPBOOST]->val1 / battle_config.vip_bm_increase );
}
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * (bonus + vip_bonus_base)/100., 1, UINT_MAX);
if (*base_exp)
*base_exp = (unsigned int)cap_value(*base_exp + (double)*base_exp * (bonus + vip_bonus_base) / 100., 1, UINT_MAX);
// Give JEXPBOOST for quests even if src is NULL.
if (&sd->sc && sd->sc.data[SC_JEXPBOOST])
bonus += sd->sc.data[SC_JEXPBOOST]->val1;
*job_exp = (unsigned int) cap_value(*job_exp + (double)*job_exp * (bonus + vip_bonus_job)/100., 1, UINT_MAX);
if (*job_exp)
*job_exp = (unsigned int)cap_value(*job_exp + (double)*job_exp * (bonus + vip_bonus_job) / 100., 1, UINT_MAX);
return;
}