|
@@ -10470,35 +10470,44 @@ static bool pc_readdb_levelpenalty(char* fields[], int columns, int current)
|
|
/** [Cydh]
|
|
/** [Cydh]
|
|
* Calculates base hp of player. Reference: http://irowiki.org/wiki/Max_HP
|
|
* Calculates base hp of player. Reference: http://irowiki.org/wiki/Max_HP
|
|
* @param level Base level of player
|
|
* @param level Base level of player
|
|
-* @param idx Index of class
|
|
|
|
|
|
+* @param class_ Job ID @see enum e_job
|
|
* @return base_hp
|
|
* @return base_hp
|
|
*/
|
|
*/
|
|
-static unsigned int pc_calc_basehp(uint16 level, uint16 class_idx) {
|
|
|
|
|
|
+static unsigned int pc_calc_basehp(uint16 level, uint16 class_) {
|
|
double base_hp;
|
|
double base_hp;
|
|
- uint16 i;
|
|
|
|
|
|
+ uint16 i, idx = pc_class2idx(class_);
|
|
|
|
|
|
- base_hp = 35 + level * (job_info[class_idx].hp_multiplicator/100.);
|
|
|
|
|
|
+ base_hp = 35 + level * (job_info[idx].hp_multiplicator/100.);
|
|
#ifndef RENEWAL
|
|
#ifndef RENEWAL
|
|
- if(level >= 10 && (class_idx == JOB_NINJA || class_idx == JOB_GUNSLINGER)) base_hp += 90;
|
|
|
|
|
|
+ if(level >= 10 && (class_ == JOB_NINJA || class_ == JOB_GUNSLINGER)) base_hp += 90;
|
|
#endif
|
|
#endif
|
|
for (i = 2; i <= level; i++)
|
|
for (i = 2; i <= level; i++)
|
|
- base_hp += floor(((job_info[class_idx].hp_factor/100.) * i) + 0.5); //Don't have round()
|
|
|
|
|
|
+ base_hp += floor(((job_info[idx].hp_factor/100.) * i) + 0.5); //Don't have round()
|
|
return (unsigned int)base_hp;
|
|
return (unsigned int)base_hp;
|
|
}
|
|
}
|
|
|
|
|
|
-/** [Playter]
|
|
|
|
|
|
+/** [Playtester]
|
|
* Calculates base sp of player.
|
|
* Calculates base sp of player.
|
|
* @param level Base level of player
|
|
* @param level Base level of player
|
|
-* @param idx Index of class
|
|
|
|
|
|
+* @param class_ Job ID @see enum e_job
|
|
* @return base_sp
|
|
* @return base_sp
|
|
*/
|
|
*/
|
|
-static unsigned int pc_calc_basesp(uint16 level, uint16 class_idx) {
|
|
|
|
|
|
+static unsigned int pc_calc_basesp(uint16 level, uint16 class_) {
|
|
double base_sp;
|
|
double base_sp;
|
|
|
|
+ uint16 idx = pc_class2idx(class_);
|
|
|
|
|
|
- base_sp = 10 + floor(level * (job_info[class_idx].sp_factor / 100.));
|
|
|
|
|
|
+ base_sp = 10 + floor(level * (job_info[idx].sp_factor / 100.));
|
|
#ifndef RENEWAL
|
|
#ifndef RENEWAL
|
|
- if(level >= 10 && class_idx == JOB_NINJA) base_sp -= 20;
|
|
|
|
- if(level >= 10 && class_idx == JOB_GUNSLINGER) base_sp -= 17;
|
|
|
|
|
|
+ switch (class_) {
|
|
|
|
+ case JOB_NINJA:
|
|
|
|
+ if (level >= 10)
|
|
|
|
+ base_sp -= 20;
|
|
|
|
+ break;
|
|
|
|
+ case JOB_GUNSLINGER:
|
|
|
|
+ if (level >= 10)
|
|
|
|
+ base_sp -= 17;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
#endif
|
|
#endif
|
|
return (unsigned int)base_sp;
|
|
return (unsigned int)base_sp;
|
|
}
|
|
}
|
|
@@ -10856,7 +10865,8 @@ void pc_readdb(void) {
|
|
for (i = 0; i < JOB_MAX; i++) {
|
|
for (i = 0; i < JOB_MAX; i++) {
|
|
int idx;
|
|
int idx;
|
|
uint16 j;
|
|
uint16 j;
|
|
- if (!pcdb_checkid(i)) continue;
|
|
|
|
|
|
+ if (!pcdb_checkid(i))
|
|
|
|
+ continue;
|
|
if (i == JOB_WEDDING || i == JOB_XMAS || i == JOB_SUMMER || i == JOB_HANBOK || i == JOB_OKTOBERFEST)
|
|
if (i == JOB_WEDDING || i == JOB_XMAS || i == JOB_SUMMER || i == JOB_HANBOK || i == JOB_OKTOBERFEST)
|
|
continue; //Classes that do not need exp tables.
|
|
continue; //Classes that do not need exp tables.
|
|
idx = pc_class2idx(i);
|
|
idx = pc_class2idx(i);
|
|
@@ -10868,9 +10878,9 @@ void pc_readdb(void) {
|
|
//Init and checking the empty value of Base HP/SP [Cydh]
|
|
//Init and checking the empty value of Base HP/SP [Cydh]
|
|
for (j = 0; j < (job_info[idx].max_level[0] ? job_info[idx].max_level[0] : MAX_LEVEL); j++) {
|
|
for (j = 0; j < (job_info[idx].max_level[0] ? job_info[idx].max_level[0] : MAX_LEVEL); j++) {
|
|
if (job_info[idx].base_hp[j] == 0)
|
|
if (job_info[idx].base_hp[j] == 0)
|
|
- job_info[idx].base_hp[j] = pc_calc_basehp(j+1,idx);
|
|
|
|
|
|
+ job_info[idx].base_hp[j] = pc_calc_basehp(j+1,i);
|
|
if (job_info[idx].base_sp[j] == 0)
|
|
if (job_info[idx].base_sp[j] == 0)
|
|
- job_info[idx].base_sp[j] = pc_calc_basesp(j+1,idx);
|
|
|
|
|
|
+ job_info[idx].base_sp[j] = pc_calc_basesp(j+1,i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|