summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Renewal.txt2
-rw-r--r--conf/battle/player.conf6
-rw-r--r--db/statpoint.txt292
-rw-r--r--src/map/battle.c2
-rw-r--r--src/map/battle.h2
-rw-r--r--src/map/pc.c40
-rw-r--r--src/map/pc.h2
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)