* 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
This commit is contained in:
Gepard 2011-05-15 09:20:53 +00:00
parent 44a2936f02
commit 2e3209566f
7 changed files with 190 additions and 156 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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, },

View File

@ -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;

View File

@ -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;
}

View File

@ -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)