Fixed max HP/SP of extended classes in pre-re
- Fixed max HP/SP of extended classes being way too low in pre-renewal (related to #358) * It's impossible to make it 100% accurate without tables, but I made it as accurate as possible for now * More updates to max HP/SP will follow when I have time
This commit is contained in:
@@ -52,9 +52,9 @@
|
||||
// Super Novice
|
||||
23, 20000,0 ,500 ,100 ,500 ,650 ,700 ,2000 ,2000 ,2000 ,800 ,2000 ,700 ,700 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650
|
||||
// Gunslinger
|
||||
24, 28000,75 , 0 ,400 ,500 ,2000, 2000, 2000, 2000, 2000, 2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 700 , 750 , 700 ,1500 ,1500 ,2000 ,2000
|
||||
24, 28000,89 , 0 ,462 ,500 ,2000, 2000, 2000, 2000, 2000, 2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 700 , 750 , 700 ,1500 ,1500 ,2000 ,2000
|
||||
// Ninja
|
||||
25, 26000,80 , 0 ,300 ,400 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000
|
||||
25, 26000,80 , 0 ,530 ,400 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000
|
||||
// Novice High
|
||||
4001, 20000,0 ,500 ,100 ,500 ,650 ,700 ,2000 ,2000 ,2000 ,800 ,2000 ,700 ,700 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650
|
||||
// Swordman High
|
||||
@@ -148,9 +148,9 @@
|
||||
// Taekwon
|
||||
4046, 28000,70 ,500 ,200 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
|
||||
// Star Gladiator
|
||||
4047, 28000,90 ,650 ,400 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
|
||||
4047, 28000,90 ,650 ,470 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
|
||||
// Star Gladiator (Union)
|
||||
4048, 28000,90 ,650 ,400 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
|
||||
4048, 28000,90 ,650 ,470 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
|
||||
// Soul Linker
|
||||
4049, 24000,75 ,500 ,900 ,500 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625
|
||||
//================================
|
||||
|
||||
22
src/map/pc.c
22
src/map/pc.c
@@ -10478,11 +10478,31 @@ static unsigned int pc_calc_basehp(uint16 level, uint16 class_idx) {
|
||||
uint16 i;
|
||||
|
||||
base_hp = 35 + level * (job_info[class_idx].hp_multiplicator/100.);
|
||||
#ifndef RENEWAL
|
||||
if(level >= 10 && (class_idx == JOB_NINJA || class_idx == JOB_GUNSLINGER)) base_hp += 90;
|
||||
#endif
|
||||
for (i = 2; i <= level; i++)
|
||||
base_hp += floor(((job_info[class_idx].hp_factor/100.) * i) + 0.5); //Don't have round()
|
||||
return (unsigned int)base_hp;
|
||||
}
|
||||
|
||||
/** [Playter]
|
||||
* Calculates base sp of player.
|
||||
* @param level Base level of player
|
||||
* @param idx Index of class
|
||||
* @return base_sp
|
||||
*/
|
||||
static unsigned int pc_calc_basesp(uint16 level, uint16 class_idx) {
|
||||
double base_sp;
|
||||
|
||||
base_sp = 10 + floor(level * (job_info[class_idx].sp_factor / 100.));
|
||||
#ifndef RENEWAL
|
||||
if(level >= 10 && class_idx == JOB_NINJA) base_sp -= 20;
|
||||
if(level >= 10 && class_idx == JOB_GUNSLINGER) base_sp -= 17;
|
||||
#endif
|
||||
return (unsigned int)base_sp;
|
||||
}
|
||||
|
||||
//Reading job_db1.txt line, (class,weight,HPFactor,HPMultiplicator,SPFactor,aspd/lvl...)
|
||||
static bool pc_readdb_job1(char* fields[], int columns, int current){
|
||||
int idx, class_;
|
||||
@@ -10850,7 +10870,7 @@ void pc_readdb(void) {
|
||||
if (job_info[idx].base_hp[j] == 0)
|
||||
job_info[idx].base_hp[j] = pc_calc_basehp(j+1,idx);
|
||||
if (job_info[idx].base_sp[j] == 0)
|
||||
job_info[idx].base_sp[j] = 10 + (unsigned int)floor((j+1) * (job_info[idx].sp_factor / 100.));
|
||||
job_info[idx].base_sp[j] = pc_calc_basesp(j+1,idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user