فهرست منبع

Fixed map crash on load when lowering MAX_LEVEL - Fixes bugreport:7783
Added Kagerou and Oboro to Ninja HP/SP table and Ex. Super Novice to Novice HP/SP table as we had no values for them - Fixes bugreport:7782
Fixed a wrong Gunslinger HP table value causing a warning
Warnings on HP/SP tables will only occur when the database values are less than previous levels. Formula built values will not give warnings.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17394 54d463be-8e91-2dee-dedb-b68131a5f0ec

akinari1087 12 سال پیش
والد
کامیت
75af12fb1f
2فایلهای تغییر یافته به همراه33 افزوده شده و 33 حذف شده
  1. 7 7
      db/re/job_maxhpsp_db.txt
  2. 26 26
      src/map/pc.c

+ 7 - 7
db/re/job_maxhpsp_db.txt

@@ -6,8 +6,8 @@
 // Renewal MaxHP & MaxSP Database
 //===============================
 
-//MaxHP - Novice/Super Novice/Novice High/Baby Novice/Baby Super Novice
-1,99,0:23:4001:4023:4045,0,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315,320,325,330,335,340,345,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440,445,450,455,460,465,470,475,480,485,490,495,500,505,510,515,520,525,530
+//MaxHP - Novice/Super Novice/Novice High/Baby Novice/Baby Super Novice/EX. Super Novice
+1,99,0:23:4001:4023:4045:4190,0,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315,320,325,330,335,340,345,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440,445,450,455,460,465,470,475,480,485,490,495,500,505,510,515,520,525,530
 
 //MaxHP - Swordman/Swordman High/Baby Swordman
 1,99,1:4002:4024,0,40,46,53,61,70,79,89,100,111,123,136,149,163,178,194,210,227,245,263,282,302,322,343,365,388,411,435,460,485,511,538,565,593,622,652,682,713,745,777,810,844,878,913,949,986,1023,1061,1100,1139,1179,1220,1261,1303,1346,1390,1434,1479,1525,1571,1618,1666,1714,1763,1813,1864,1915,1967,2020,2073,2127,2182,2237,2293,2350,2408,2466,2525,2585,2645,2706,2768,2830,2893,2957,3022,3087,3153,3220,3287,3355,3424,3493,3563,3634,3706,3778,3851,3925,3999
@@ -49,10 +49,10 @@
 1,99,19:20:4020:4021:4042:4043,0,40,47,54,62,71,81,91,102,114,127,140,154,169,180,196,212,224,242,260,278,296,316,330,350,371,393,415,438,451,477,503,530,558,587,616,646,677,709,741,774,808,843,878,914,951,989,1027,1066,1106,1147,1188,1230,1273,1317,1361,1406,1452,1499,1546,1594,1643,1693,1743,1794,1846,1899,1952,2006,2061,2117,2173,2230,2288,2347,2406,2466,2527,2589,2651,2714,2778,2843,2908,2974,3041,3109,3177,3246,3316,3387,3458,3530,3603,3677,3751,3826,3902,3979,4056
 
 //MaxHP - Gunslinger
-1,99,24,0,40,47,55,64,74,84,95,107,120,134,149,165,182,200,219,238,258,306,329,354,379,406,433,462,491,521,551,583,615,649,683,719,755,793,831,870,909,950,991,1034,1077,1122,1167,1214,1261,1309,1357,1407,1457,1509,1561,1615,1669,1725,1781,1838,1895,1954,2013,2074,2135,2198,2261,2326,2391,2457,2523,2591,2659,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,3000,3020,3040,3060,3080,3100,3120,3140,3160,3180,3455,3524,3593,3663,3834,3806,3878,3951,4025,4500
+1,99,24,0,40,47,55,64,74,84,95,107,120,134,149,165,182,200,219,238,258,306,329,354,379,406,433,462,491,521,551,583,615,649,683,719,755,793,831,870,909,950,991,1034,1077,1122,1167,1214,1261,1309,1357,1407,1457,1509,1561,1615,1669,1725,1781,1838,1895,1954,2013,2074,2135,2198,2261,2326,2391,2457,2523,2591,2659,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,3000,3020,3040,3060,3080,3100,3120,3140,3160,3180,3455,3524,3593,3663,3734,3806,3878,3951,4025,4500
 
 //MaxHP - Ninja
-1,99,25,0,40,47,54,62,71,81,91,102,114,127,140,154,169,185,201,218,236,255,274,294,315,337,359,382,406,431,456,482,509,537,565,594,624,655,686,718,751,785,819,854,890,927,964,1002,1041,1081,1121,1162,1204,1247,1290,1334,1379,1425,1471,1518,1566,1615,1664,1714,1765,1817,1869,1922,1976,2031,2086,2142,2199,2257,2275,2294,2314,2335,2356,2378,2401,2425,2449,2874,2890,2907,2924,2942,2971,2991,3011,3032,3054,3567,3590,3614,3649,3675,3701,3728,3756,3800,4250
+1,99,25:4211:4212,0,40,47,54,62,71,81,91,102,114,127,140,154,169,185,201,218,236,255,274,294,315,337,359,382,406,431,456,482,509,537,565,594,624,655,686,718,751,785,819,854,890,927,964,1002,1041,1081,1121,1162,1204,1247,1290,1334,1379,1425,1471,1518,1566,1615,1664,1714,1765,1817,1869,1922,1976,2031,2086,2142,2199,2257,2275,2294,2314,2335,2356,2378,2401,2425,2449,2874,2890,2907,2924,2942,2971,2991,3011,3032,3054,3567,3590,3614,3649,3675,3701,3728,3756,3800,4250
 
 //MaxHP - Taekwon
 1,99,4046,0,40,46,53,61,70,79,89,100,111,123,136,149,163,178,194,210,227,245,263,282,302,322,343,365,388,411,435,460,485,511,538,565,593,622,652,682,713,745,777,810,844,878,913,949,986,1023,1061,1100,1139,1179,1220,1261,1303,1346,1390,1434,1479,1525,1571,1618,1666,1714,1763,1813,1864,1915,1967,2020,2073,2127,2137,2147,2157,2167,2177,2187,2197,2200,2210,2230,2250,2300,2350,2400,2450,2500,2550,2600,2650,2700,2750,2800,2850,2900,2950,3000,3050,3100,3200
@@ -99,8 +99,8 @@
 //MaxHP - Genetic/Genetic_T
 99,150,4071:4078:4107,0,4730,4766,4853,4940,5027,5113,5200,5287,5374,5461,5548,5635,5722,5809,5896,5982,6069,6156,6243,6330,6417,6504,6591,6678,6765,6851,6938,7025,7112,7199,7286,7373,7460,7547,7634,7720,7807,7894,7981,8068,8155,8242,8329,8416,8503,8589,8676,8763,8850,8937,9024,9111
 
-//MaxSP - Novice/Super Novice/Novice High/Baby Novice/Baby Super Novice
-1,99,0:23:4001:4023:4045,1,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109
+//MaxSP - Novice/Super Novice/Novice High/Baby Novice/Baby Super Novice/Ex. Super Novice
+1,99,0:23:4001:4023:4045:4190,1,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109
 
 //MaxSP - Swordman/Archer/Thief/Swordman High/Archer High/Thief High/Baby Swordman/Baby Archer/Baby Thief
 1,99,1:3:6:4002:4004:4007:4024:4026:4029,1,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208
@@ -133,7 +133,7 @@
 1,99,24,1,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,61,64,67,70,73,76,79,82,85,89,93,97,101,105,109,113,117,121,125,129,131,135,139,141,145,149,153,157,161,165,169,173,177,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266,271,276,281,286,291,296,301,306,312,318,324,336,342,348,354,360,366,372,378,384,390,396,402,408,414,420,426,432,438,444,450,456
 
 //MaxSP - Ninja
-1,99,25,1,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,257,263,269,275,281,287,293,299,305,311,317,323,329,335,341,347,353,359,365,371,378,386,394,402,410,418,426,434,442,450,458,466,474,482,490,498,506,514,522
+1,99,25:4211:4212,1,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,257,263,269,275,281,287,293,299,305,311,317,323,329,335,341,347,353,359,365,371,378,386,394,402,410,418,426,434,442,450,458,466,474,482,490,498,506,514,522
 
 //MaxSP - Taekwon
 1,99,4046,1,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,151,152,153,154,155,156,157,158,159,170,171,172,173,174,175,176,177,178,188,190,190,190,190,190,190,190,190,190,200

+ 26 - 26
src/map/pc.c

@@ -9741,48 +9741,48 @@ static bool pc_readdb_job_maxhpsp(char* fields[], int columns, int current)
 		if(type == 0) {	//hp type
 			unsigned int k = 0;
 			unsigned int val, oldval=0;
-			for(i = 1; i <= MAX_LEVEL; i++) {
+			short level = 0;
+			for(i = 0; i <= MAX_LEVEL; i++) {
 				val = 0;
 				k += (job_info[idx].hp_factor*(i+1) + 50) / 100;
-				if(i>=startlvl && i<=maxlvl)
-					val = atoi(fields[i+4]);
-				if(val==0 || oldval>=0)	//if oldval>=val, assume the default calculation always be higher
+				if(i>=startlvl && i <= maxlvl) val = atoi(fields[(i-level)+4]);
+				if(val==0) {
 					val = 35 + ((i+1)*job_info[idx].hp_multiplicator)/100 + k;
-				if(oldval >= val) {
-					ShowInfo("pc_readdb_job_maxhpsp: HP value is lower or equal then previous one. Using temporary... (job=%d,oldval=%d,val=%d,lvl=%d,hp_factor=%d,hp_multiplicator=%d,k=%d)\n"
-						,job_id,oldval,val,i+1,job_info[idx].hp_factor,job_info[idx].hp_multiplicator,k);
-					//val = oldval+job_info[idx].hp_multiplicator;	//if oldval still >= val, maybe we can use this?
+					level++; // This tells us when we didn't use the database so we know what field to grab
 				}
+				if(oldval > val && i > startlvl && i <= maxlvl) // Let's not warn about the formula table giving us a higher value, only DB
+					ShowWarning("Warn, HP value is lower than previous one for (job=%d,oldval=%d,val=%d,lvl=%d hp_factor=%d,hp_multiplicator=%d,k=%d)\n",
+						job_id,oldval,val,i+1,job_info[idx].hp_factor,job_info[idx].hp_multiplicator,k);
 				val = min(INT_MAX,val);
-				job_info[idx].hp_table[i-1] = val;
+				job_info[idx].hp_table[i] = val;
 				oldval = val;
 			}
-//			ShowInfo("Have readen hp table for job=%d\n{",job_id);
-//			for(i=0; i<MAX_LEVEL; i++ )
-//				printf("%d,",job_info[idx].hp_table[i]);
-//			printf("\n}\n");
+	//		ShowInfo("Have readen hp table for job=%d\n{",job_id);
+	//		for(i=0; i<=MAX_LEVEL; i++ )
+	//			printf("%d,",job_info[idx].hp_table[i]);
+	//		printf("\n}\n");
 		}
 		else if(type == 1){ //sp type
 			unsigned int val, oldval=0;
-			for(i = 1; i <= MAX_LEVEL; i++) {
+			short level = 0;
+			for(i = 0; i <= MAX_LEVEL; i++) {
 				val = 0;
-				if(i>=startlvl && i <=maxlvl)
-					val = atoi(fields[i+4]);
-				if(val==0 || oldval>=0)	//if oldval>=val, assume the default calculation always be higher
+				if(i>=startlvl && i <=maxlvl) val = atoi(fields[(i-level)+4]);
+				if(val==0) {
 					val = 10 + ((i+1)*job_info[idx].sp_factor)/100;
-				if(oldval >= val) {
-					ShowInfo("pc_readdb_job_maxhpsp: SP value is lower or equal then previous one. Using temporary... (job=%d,oldval=%d,val=%d,lvl=%d,sp_factor=%d)\n"
-						,job_id,oldval,val,i,job_info[idx].sp_factor);
-					//val = oldval+job_info[idx].sp_factor;	//if oldval still >= val, maybe we can use this?
+					level++; // This tells us when we didn't use the database so we know what field to grab
 				}
+				if(oldval > val && i > startlvl && i <= maxlvl) // Let's not warn about the formula table giving us a higher value, only DB
+					ShowWarning("Warn, SP value is lower than previous one for (job=%d,oldval=%d,val=%d,lvl=%d,sp_factor=%d)\n",
+						job_id,oldval,val,i+1,job_info[idx].sp_factor);
 				val = min(INT_MAX,val);
-				job_info[idx].sp_table[i-1] = val;
+				job_info[idx].sp_table[i] = val;
 				oldval = val;
 			}
-//			ShowInfo("Have readen sp table for job=%d\n{",job_id);
-//			for(i=0; i<MAX_LEVEL; i++ )
-//				printf("%d,",job_info[idx].sp_table[i]);
-//			printf("\n}\n");
+	//		ShowInfo("Have readen sp table for job=%d\n{",job_id);
+	//		for(i=0; i<MAX_LEVEL; i++ )
+	//			printf("%d,",job_info[idx].sp_table[i]);
+	//		printf("\n}\n");
 		}
 	}
 	return true;