Explorar el Código

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

Playtester hace 9 años
padre
commit
a4aad69750
Se han modificado 5 ficheros con 16 adiciones y 11 borrados
  1. 4 3
      db/import-tmpl/job_exp.txt
  2. 2 2
      db/pre-re/job_exp.txt
  3. 2 2
      db/re/job_exp.txt
  4. 4 2
      src/map/mob.c
  5. 4 2
      src/map/pc.c

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 3
db/import-tmpl/job_exp.txt


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
db/pre-re/job_exp.txt


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
db/re/job_exp.txt


+ 4 - 2
src/map/mob.c

@@ -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);

+ 4 - 2
src/map/pc.c

@@ -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;
 }

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio