* 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 Date Added
2011/05/15 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] * Fixes to Job Level stat bonuses table. [Gepard]
- Added missing bonuses: Warlock's INT, Minstrel's INT & AGI, Genetic's VIT. - Added missing bonuses: Warlock's INT, Minstrel's INT & AGI, Genetic's VIT.
- Official Royal Guard's bonuses. - Official Royal Guard's bonuses.

View File

@ -91,6 +91,12 @@ max_parameter: 99
// Same as max_parameter, but for baby classes. // Same as max_parameter, but for baby classes.
max_baby_parameter: 80 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 // Max armor def/mdef
// NOTE: does not affects skills and status effects like Mental Strength // 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. // If weapon_defense_type is non-zero, it won't apply to max def.

View File

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

View File

@ -3771,6 +3771,8 @@ static const struct _battle_data {
{ "max_cart_weight", &battle_config.max_cart_weight, 8000, 100, 1000000, }, { "max_cart_weight", &battle_config.max_cart_weight, 8000, 100, 1000000, },
{ "max_parameter", &battle_config.max_parameter, 99, 10, 10000, }, { "max_parameter", &battle_config.max_parameter, 99, 10, 10000, },
{ "max_baby_parameter", &battle_config.max_baby_parameter, 80, 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, }, { "max_def", &battle_config.max_def, 99, 0, INT_MAX, },
{ "over_def_bonus", &battle_config.over_def_bonus, 0, 0, 1000, }, { "over_def_bonus", &battle_config.over_def_bonus, 0, 0, 1000, },
{ "skill_log", &battle_config.skill_log, BL_NUL, BL_NUL, BL_ALL, }, { "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_hp;
int max_sp; int max_sp;
int max_lv, aura_lv; 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 max_cart_weight;
int skill_log; int skill_log;
int battle_log; int battle_log;

View File

@ -5040,11 +5040,16 @@ int pc_checkbaselevelup(struct map_session_data *sd)
sd->status.base_level ++; 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]; next = statp[sd->status.base_level] - statp[sd->status.base_level-1];
else //Estimated way. else //Default increase
{
if (sd->status.base_level <= 100)
next = (sd->status.base_level+14) / 5; next = (sd->status.base_level+14) / 5;
else
next = (sd->status.base_level+129) / 10;
}
sd->status.status_point += next; sd->status.status_point += next;
} while ((next=pc_nextbaseexp(sd)) > 0 && sd->status.base_exp >= 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. /// 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) 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. /// 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_JOBEXP);
clif_updatestatus(sd,SP_NEXTJOBEXP); 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++) { for(i=0;i<EQI_MAX;i++) {
if(sd->equip_index[i] >= 0) if(sd->equip_index[i] >= 0)
if(!pc_isequip(sd,sd->equip_index[i])) 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 // generate the remaining parts of the db if necessary
statp[0] = 45; // seed value statp[0] = 45; // seed value
for (; i <= MAX_LEVEL; i++) for (; i <= MAX_LEVEL; i++) {
statp[i] = statp[i-1] + (i-1+15)/5; if(i <= 100)
statp[i] = statp[i-1] + (i+14)/5;
else
statp[i] = statp[i-1] + (i+129)/10;
}
return 0; return 0;
} }

View File

@ -540,7 +540,7 @@ enum equip_index {
#define pc_isinvisible(sd) ( (sd)->sc.option&OPTION_INVISIBLE ) #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_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_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_walking(sd, type) unit_stop_walking(&(sd)->bl, type)
#define pc_stop_attack(sd) unit_stop_attack(&(sd)->bl) #define pc_stop_attack(sd) unit_stop_attack(&(sd)->bl)