diff options
author | Gepard <Gepard@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-05-15 09:20:53 +0000 |
---|---|---|
committer | Gepard <Gepard@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-05-15 09:20:53 +0000 |
commit | 6af2f57a569cb3c8949ea84029e169daecf24548 (patch) | |
tree | 4671e4ef95c1273513fc1c1ed501f8d5e9eb9c03 | |
parent | da193f6ae35ba2a1558ddee8e505a07a401c9603 (diff) | |
download | hercules-6af2f57a569cb3c8949ea84029e169daecf24548.tar.gz hercules-6af2f57a569cb3c8949ea84029e169daecf24548.tar.bz2 hercules-6af2f57a569cb3c8949ea84029e169daecf24548.tar.xz hercules-6af2f57a569cb3c8949ea84029e169daecf24548.zip |
* 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://rathena.svn.sourceforge.net/svnroot/rathena/branches/renewal@14823 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog-Renewal.txt | 2 | ||||
-rw-r--r-- | conf/battle/player.conf | 6 | ||||
-rw-r--r-- | db/statpoint.txt | 292 | ||||
-rw-r--r-- | src/map/battle.c | 2 | ||||
-rw-r--r-- | src/map/battle.h | 2 | ||||
-rw-r--r-- | src/map/pc.c | 40 | ||||
-rw-r--r-- | src/map/pc.h | 2 |
7 files changed, 190 insertions, 156 deletions
diff --git a/Changelog-Renewal.txt b/Changelog-Renewal.txt index 4c744edcc..eb69c37c1 100644 --- a/Changelog-Renewal.txt +++ b/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. diff --git a/conf/battle/player.conf b/conf/battle/player.conf index d93337429..5ac599a96 100644 --- a/conf/battle/player.conf +++ b/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. diff --git a/db/statpoint.txt b/db/statpoint.txt index 1b3f3d893..71d0e5506 100644 --- a/db/statpoint.txt +++ b/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 diff --git a/src/map/battle.c b/src/map/battle.c index 11e696a7f..aea2f2da4 100644 --- a/src/map/battle.c +++ b/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, }, diff --git a/src/map/battle.h b/src/map/battle.h index 58f622321..8d014c5f9 100644 --- a/src/map/battle.h +++ b/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; diff --git a/src/map/pc.c b/src/map/pc.c index f55a77b6a..13e6fae57 100644 --- a/src/map/pc.c +++ b/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; } diff --git a/src/map/pc.h b/src/map/pc.h index b6b6fb851..029630eec 100644 --- a/src/map/pc.h +++ b/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) |