Parcourir la source

* Added support for increased max statistics (parameters) for 3rd classes (regular and baby).
* Updated amounts of status points given at Base Level up for levels over 99.


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

Gepard il y a 14 ans
Parent
commit
2e3209566f
7 fichiers modifiés avec 190 ajouts et 156 suppressions
  1. 2 0
      Changelog-Renewal.txt
  2. 6 0
      conf/battle/player.conf
  3. 146 146
      db/statpoint.txt
  4. 2 0
      src/map/battle.c
  5. 1 1
      src/map/battle.h
  6. 32 8
      src/map/pc.c
  7. 1 1
      src/map/pc.h

+ 2 - 0
Changelog-Renewal.txt

@@ -1,6 +1,8 @@
 Date	Added
 
 2011/05/15
+	* Added support for increased max statistics (parameters) for 3rd classes (regular and baby). [Gepard]
+	* Updated amounts of status points given at Base Level up for levels over 99. [Gepard]
 	* Fixes to Job Level stat bonuses table. [Gepard]
 	- Added missing bonuses: Warlock's INT, Minstrel's INT & AGI, Genetic's VIT.
 	- Official Royal Guard's bonuses.

+ 6 - 0
conf/battle/player.conf

@@ -91,6 +91,12 @@ max_parameter: 99
 // Same as max_parameter, but for baby classes.
 max_baby_parameter: 80
 
+// Same as max_parameter, but for third classes.
+max_third_parameter: 120
+
+// Same as max_parameter, but for baby third classes.
+max_baby_third_parameter: 108
+
 // Max armor def/mdef 
 // NOTE: does not affects skills and status effects like Mental Strength
 // If weapon_defense_type is non-zero, it won't apply to max def.

+ 146 - 146
db/statpoint.txt

@@ -103,153 +103,153 @@
 1364
 1387
 1410
-1434
-1458
-1482
-1506
-1530
-1555
-1580
-1605
-1630
-1655
-1681
-1707
-1733
-1759
-1785
-1812
-1839
-1866
-1893
-1920
-1948
-1976
-2004
-2032
-2060
-2089
-2118
-2147
-2176
-2205
-2235
-2265
-2295
-2325
-2355
-2386
-2417
-2448
-2479
-2510
-2542
-2574
-2606
-2638
-2670
-2703
-2736
+1433
+1456
+1479
+1502
+1525
+1549
+1573
+1597
+1621
+1645
+1669
+1693
+1717
+1741
+1765
+1790
+1815
+1840
+1865
+1890
+1915
+1940
+1965
+1990
+2015
+2041
+2067
+2093
+2119
+2145
+2171
+2197
+2223
+2249
+2275
+2302
+2329
+2356
+2383
+2410
+2437
+2464
+2491
+2518
+2545
+2573
+2601
+2629
+2657
+2685
+2713
+2743
 2769
-2802
-2835
-2869
-2903
-2937
-2971
-3005
-3040
-3075
-3110
+2797
+2825
+2854
+2883
+2912
+2941
+2970
+2999
+3028
+3057
+3086
+3115
 3145
-3180
-3216
-3252
-3288
-3324
-3360
-3397
-3434
-3471
+3175
+3205
+3235
+3265
+3295
+3325
+3355
+3385
+3415
+3446
+3477
 3508
-3545
-3583
-3621
-3659
-3697
-3735
-3774
-3813
-3852
-3891
-3930
-3970
-4010
-4050
-4090
-4130
-4171
-4212
-4253
-4294
-4335
-4377
-4419
-4461
-4503
+3539
+3570
+3601
+3632
+3663
+3694
+3725
+3757
+3789
+3821
+3853
+3885
+3917
+3949
+3981
+4013
+4045
+4078
+4111
+4114
+4177
+4210
+4243
+4276
+4309
+4342
+4375
+4409
+4443
+4477
+4511
 4545
-4588
-4631
-4674
-4717
-4760
-4804
-4848
-4892
-4936
-4980
-5025
-5070
-5115
-5160
-5205
-5251
-5297
-5343
-5389
-5435
-5482
-5529
-5576
-5623
-5670
-5718
-5766
-5814
-5862
-5910
-5959
-6008
-6057
-6106
-6155
-6205
-6255
-6305
-6355
-6405
-6456
-6507
-6558
-6609
-6660
-6712
-6764
-6816
-6868
-6920
-6973
-7026
-7079
-7132
-7185
+4579
+4613
+4647
+4681
+4715
+4750
+4785
+4820
+4855
+4890
+4925
+4960
+5030
+5065
+5100
+5136
+5172
+5208
+5244
+5280
+5316
+5352
+5388
+5424
+5460
+5497
+5537
+5571
+5608
+5645
+5682
+5719
+5793
+5830
+5868
+5906
+5944
+5982
+6020
+6058

+ 2 - 0
src/map/battle.c

@@ -3771,6 +3771,8 @@ static const struct _battle_data {
 	{ "max_cart_weight",                    &battle_config.max_cart_weight,                 8000,   100,    1000000,        },
 	{ "max_parameter",                      &battle_config.max_parameter,                   99,     10,     10000,          },
 	{ "max_baby_parameter",                 &battle_config.max_baby_parameter,              80,     10,     10000,          },
+	{ "max_third_parameter",                &battle_config.max_third_parameter,             120,    10,     10000,          },
+	{ "max_baby_third_parameter",           &battle_config.max_baby_third_parameter,        108,    10,     10000,          },
 	{ "max_def",                            &battle_config.max_def,                         99,     0,      INT_MAX,        },
 	{ "over_def_bonus",                     &battle_config.over_def_bonus,                  0,      0,      1000,           },
 	{ "skill_log",                          &battle_config.skill_log,                       BL_NUL, BL_NUL, BL_ALL,         },

+ 1 - 1
src/map/battle.h

@@ -236,7 +236,7 @@ extern struct Battle_Config
 	int max_hp;
 	int max_sp;
 	int max_lv, aura_lv;
-	int max_parameter, max_baby_parameter;
+	int max_parameter, max_baby_parameter, max_third_parameter, max_baby_third_parameter;
 	int max_cart_weight;
 	int skill_log;
 	int battle_log;

+ 32 - 8
src/map/pc.c

@@ -5040,11 +5040,16 @@ int pc_checkbaselevelup(struct map_session_data *sd)
 
 		sd->status.base_level ++;
 
-		if (battle_config.use_statpoint_table)
+		//Give status points
+		if (battle_config.use_statpoint_table) //Use values from "db/statpoint.txt"
 			next = statp[sd->status.base_level] - statp[sd->status.base_level-1];
-		else //Estimated way.
-			next = (sd->status.base_level+14) / 5 ;
-
+		else //Default increase
+		{
+			if (sd->status.base_level <= 100)
+				next = (sd->status.base_level+14) / 5;
+			else
+				next = (sd->status.base_level+129) / 10;
+		}
 		sd->status.status_point += next;
 
 	} while ((next=pc_nextbaseexp(sd)) > 0 && sd->status.base_exp >= next);
@@ -5365,7 +5370,15 @@ static int pc_setstat(struct map_session_data* sd, int type, int val)
 /// Returns the number of stat points needed to raise the specified stat by 1.
 int pc_need_status_point(struct map_session_data* sd, int type)
 {
-	return ( 1 + (pc_getstat(sd,type) + 9) / 10 );
+	int stat = pc_getstat(sd, type);
+
+	if( stat >= pc_maxparameter(sd) )
+		return 0; // Official servers show '0' when max is reached
+
+	if( stat < 100 )
+		return ( 1 + (stat + 9) / 10 );
+	else
+		return ( 16 + 4*((stat - 100) / 5) );
 }
 
 /// Raises a stat by 1.
@@ -6598,6 +6611,14 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 	clif_updatestatus(sd,SP_JOBEXP);
 	clif_updatestatus(sd,SP_NEXTJOBEXP);
 
+	//New job may have new max_parameter, so update stat points needed to raise a stat
+	clif_updatestatus(sd,SP_USTR);
+	clif_updatestatus(sd,SP_UAGI);
+	clif_updatestatus(sd,SP_UVIT);
+	clif_updatestatus(sd,SP_UINT);
+	clif_updatestatus(sd,SP_UDEX);
+	clif_updatestatus(sd,SP_ULUK);
+
 	for(i=0;i<EQI_MAX;i++) {
 		if(sd->equip_index[i] >= 0)
 			if(!pc_isequip(sd,sd->equip_index[i]))
@@ -8307,9 +8328,12 @@ int pc_readdb(void)
 	}
 	// generate the remaining parts of the db if necessary
 	statp[0] = 45; // seed value
-	for (; i <= MAX_LEVEL; i++)
-		statp[i] = statp[i-1] + (i-1+15)/5;
-
+	for (; i <= MAX_LEVEL; i++) {
+		if(i <= 100)
+			statp[i] = statp[i-1] + (i+14)/5;
+		else
+			statp[i] = statp[i-1] + (i+129)/10;
+	}
 	return 0;
 }
 

+ 1 - 1
src/map/pc.h

@@ -540,7 +540,7 @@ enum equip_index {
 #define pc_isinvisible(sd)    ( (sd)->sc.option&OPTION_INVISIBLE )
 #define pc_is50overweight(sd) ( (sd)->weight*100 >= (sd)->max_weight*battle_config.natural_heal_weight_rate )
 #define pc_is90overweight(sd) ( (sd)->weight*10 >= (sd)->max_weight*9 )
-#define pc_maxparameter(sd)   ( (sd)->class_&JOBL_BABY ? battle_config.max_baby_parameter : battle_config.max_parameter )
+#define pc_maxparameter(sd)   ( ((sd)->class_&JOBL_3 ? ((sd)->class_&JOBL_BABY ? battle_config.max_baby_third_parameter : battle_config.max_third_parameter) : ((sd)->class_&JOBL_BABY ? battle_config.max_baby_parameter : battle_config.max_parameter)) )
 
 #define pc_stop_walking(sd, type) unit_stop_walking(&(sd)->bl, type)
 #define pc_stop_attack(sd) unit_stop_attack(&(sd)->bl)