Browse Source

Summoner, Novice and Level 151+ HP/SP updated (fixes #1181)
* Summoner HP/SP values are now accurate for both HP/SP tables and the automatic calculation
* Summoner HP/SP adjustments in the code are now at the correct place and only used when the HP/SP tables are not used
* Super Novices now gain +2000 HP at both level 99 and level 150 and the bonus stays even on level 100-149 and 151+ (fixes #979)
* Normal Novices no longer get a HP boost
* Updated HP/SP tables to official values for level 151-175 and extrapolated new values for up to level 500
* Removed 3rd classes from the HP/SP tables in pre-re and replaced them with dummy data (using Novice values)
-- Note: This way updates like this one don't need to be done twice. If you want to use 3rd classes in pre-re just copy over the lines you need from the re folder or even better, use the import folder. You should use it for all customizations you do for easier updating.

Playtester 9 years ago
parent
commit
33efbd0869
5 changed files with 9 additions and 17 deletions
  1. 0 0
      db/pre-re/job_basehpsp_db.txt
  2. 1 1
      db/re/job_basehpsp_db.txt
  3. 1 1
      db/re/job_db1.txt
  4. 5 0
      src/map/pc.c
  5. 2 15
      src/map/status.c

File diff suppressed because it is too large
+ 0 - 0
db/pre-re/job_basehpsp_db.txt


File diff suppressed because it is too large
+ 1 - 1
db/re/job_basehpsp_db.txt


+ 1 - 1
db/re/job_db1.txt

@@ -272,4 +272,4 @@
 // Rebellion
 4215,   28000,90   ,650  ,469  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520  ,620  ,570  ,970  ,1070 ,2000 ,2000 ,600
 // Summoner
-4218,	20000,75   ,500  ,700  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590
+4218,	20000,70   ,500  ,500  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590

+ 5 - 0
src/map/pc.c

@@ -10689,6 +10689,8 @@ static unsigned int pc_calc_basehp(uint16 level, uint16 class_) {
 #endif
 	for (i = 2; i <= level; i++)
 		base_hp += floor(((job_info[idx].hp_factor/100.) * i) + 0.5); //Don't have round()
+	if (class_ == JOB_SUMMONER)
+		base_hp += floor((base_hp / 2) + 0.5);
 	return (unsigned int)base_hp;
 }
 
@@ -10717,6 +10719,9 @@ static unsigned int pc_calc_basesp(uint16 level, uint16 class_) {
 			else
 				base_sp = 9 + 3*level;
 			break;
+		case JOB_SUMMONER:
+			base_sp -= floor(base_sp / 2);
+			break;
 	}
 
 	return (unsigned int)base_sp;

+ 2 - 15
src/map/status.c

@@ -2798,15 +2798,8 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 #ifndef HP_SP_TABLES
 			if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.base_level >= 99)
 				bonus += 2000; // Supernovice lvl99 hp bonus.
-
-			// Summoner starts with 60 HP and gains additional HP by base level calculations.
-			if ((sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER) {
-					bonus += 18;
-					if (sd->status.base_level > 2)
-						bonus += sd->status.base_level - 2;
-					if (sd->status.base_level > 14)
-						bonus += (sd->status.base_level - 13) / 2;
-			}
+			if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.base_level >= 150)
+				bonus += 2000; // Supernovice lvl150 hp bonus.
 #endif
 		}
 
@@ -2930,12 +2923,6 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
 				if (pc_checkskill(sd, SU_TUNABELLY) == 5 && pc_checkskill(sd, SU_TUNAPARTY) == 5 && pc_checkskill(sd, SU_BUNCHOFSHRIMP) == 5 && pc_checkskill(sd, SU_FRESHSHRIMP) == 5)
 					bonus += 200;
 			}
-
-			// Summoner starts at 8 SP and gain 2 SP per even base lv and 3 SP per odd base lv.
-			if ((sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER) {
-				bonus -= 4;
-				bonus += (sd->status.base_level - 1) / 2;
-			}
 		}
 
 		//Bonus by SC

Some files were not shown because too many files changed in this diff