summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-02-09 16:18:33 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-02-09 16:18:33 +0000
commit97ef7dfb68da9a3abccb78add4666c648c668884 (patch)
treede7d7a1a846b29d6ab03d373b5331699138e268d
parent3e8fdb1e9d8591db80b24999595d2c70a004dce1 (diff)
downloadhercules-97ef7dfb68da9a3abccb78add4666c648c668884.tar.gz
hercules-97ef7dfb68da9a3abccb78add4666c648c668884.tar.bz2
hercules-97ef7dfb68da9a3abccb78add4666c648c668884.tar.xz
hercules-97ef7dfb68da9a3abccb78add4666c648c668884.zip
- pc_readdb will now cap experience required per level to UINT_MAX, it will warn the exp table has exp values above said limit.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5238 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--Changelog-Trunk.txt2
-rw-r--r--src/map/pc.c14
2 files changed, 15 insertions, 1 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 126b69236..cf377d528 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -6,6 +6,8 @@ GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALAR
2006/02/09
+ * pc_readdb will now cap experience required per level to UINT_MAX, it will
+ warn if the exp table has exp values above said limit. [Skotlex]
* Changed the default of skill_delay_attack_enable to no. [Skotlex]
* Code rewrites in mob_damage and party_exp_even_share for correctly
handling overflow issues. Now uses UINT_MAX for range comparisons, as it
diff --git a/src/map/pc.c b/src/map/pc.c
index 46fe462d8..66a14f9db 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -8047,10 +8047,22 @@ int pc_split_atoi(char *str,int *val, char sep, int max)
int pc_split_atoui(char *str,unsigned int *val, char sep, int max)
{
+ static int warning=0;
int i,j;
+ float f;
for (i=0; i<max; i++) {
if (!str) break;
- val[i] = (unsigned int)atof(str);
+ f = atof(str);
+ if (f < 0)
+ val[i] = 0;
+ else if (f > UINT_MAX) {
+ val[i] = UINT_MAX;
+ if (!warning) {
+ warning = 1;
+ ShowWarning("pc_readdb (exp.txt): Required exp per level is capped to %d\n", UINT_MAX);
+ }
+ } else
+ val[i] = (unsigned int)f;
str = strchr(str,sep);
if (str)
*str++=0;