Converted statpoint.txt to YAML (#6010)

* Converts the Statpoint Database into YAML.
* Includes CSV2YAML converter.
* Added start_status_points to inter_athena.conf

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
This commit is contained in:
Atemo 2021-07-05 19:06:49 +02:00 committed by GitHub
parent 5d26d86cc0
commit f230b13ded
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 1336 additions and 585 deletions

View File

@ -12,6 +12,9 @@ inter_log_filename: log/inter.log
// Level range for sharing within a party
party_share_level: 15
// Amount of status points a new character will start with
start_status_points: 48
// You can specify the codepage to use in your MySQL tables here.
// (Note that this feature requires MySQL 4.1+)
//default_codepage:

View File

@ -1,2 +0,0 @@
//statpoint per lvl

View File

@ -0,0 +1,31 @@
# This file is a part of rAthena.
# Copyright(C) 2021 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Statpoint Database
###########################################################################
#
# Statpoint Settings
#
###########################################################################
# - Level BaseLevel required.
# Points Total status points given from BaseLevel 1 to 'Level'.
###########################################################################
Header:
Type: STATPOINT_DB
Version: 1

View File

@ -1,255 +0,0 @@
48
51
54
57
60
64
68
72
76
80
85
90
95
100
105
111
117
123
129
135
142
149
156
163
170
178
186
194
202
210
219
228
237
246
255
265
275
285
295
305
316
327
338
349
360
372
384
396
408
420
433
446
459
472
485
499
513
527
541
555
570
585
600
615
630
646
662
678
694
710
727
744
761
778
795
813
831
849
867
885
904
923
942
961
980
1000
1020
1040
1060
1080
1101
1122
1143
1164
1185
1207
1229
1251
1273
1295
1318
1341
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
2769
2802
2835
2869
2903
2937
2971
3005
3040
3075
3110
3145
3180
3216
3252
3288
3324
3360
3397
3434
3471
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
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

543
db/pre-re/statpoint.yml Normal file
View File

@ -0,0 +1,543 @@
# This file is a part of rAthena.
# Copyright(C) 2021 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Statpoint Database
###########################################################################
#
# Statpoint Settings
#
###########################################################################
# - Level BaseLevel required.
# Points Total status points given from BaseLevel 1 to 'Level'.
###########################################################################
Header:
Type: STATPOINT_DB
Version: 1
Body:
- Level: 1
Points: 48
- Level: 2
Points: 51
- Level: 3
Points: 54
- Level: 4
Points: 57
- Level: 5
Points: 60
- Level: 6
Points: 64
- Level: 7
Points: 68
- Level: 8
Points: 72
- Level: 9
Points: 76
- Level: 10
Points: 80
- Level: 11
Points: 85
- Level: 12
Points: 90
- Level: 13
Points: 95
- Level: 14
Points: 100
- Level: 15
Points: 105
- Level: 16
Points: 111
- Level: 17
Points: 117
- Level: 18
Points: 123
- Level: 19
Points: 129
- Level: 20
Points: 135
- Level: 21
Points: 142
- Level: 22
Points: 149
- Level: 23
Points: 156
- Level: 24
Points: 163
- Level: 25
Points: 170
- Level: 26
Points: 178
- Level: 27
Points: 186
- Level: 28
Points: 194
- Level: 29
Points: 202
- Level: 30
Points: 210
- Level: 31
Points: 219
- Level: 32
Points: 228
- Level: 33
Points: 237
- Level: 34
Points: 246
- Level: 35
Points: 255
- Level: 36
Points: 265
- Level: 37
Points: 275
- Level: 38
Points: 285
- Level: 39
Points: 295
- Level: 40
Points: 305
- Level: 41
Points: 316
- Level: 42
Points: 327
- Level: 43
Points: 338
- Level: 44
Points: 349
- Level: 45
Points: 360
- Level: 46
Points: 372
- Level: 47
Points: 384
- Level: 48
Points: 396
- Level: 49
Points: 408
- Level: 50
Points: 420
- Level: 51
Points: 433
- Level: 52
Points: 446
- Level: 53
Points: 459
- Level: 54
Points: 472
- Level: 55
Points: 485
- Level: 56
Points: 499
- Level: 57
Points: 513
- Level: 58
Points: 527
- Level: 59
Points: 541
- Level: 60
Points: 555
- Level: 61
Points: 570
- Level: 62
Points: 585
- Level: 63
Points: 600
- Level: 64
Points: 615
- Level: 65
Points: 630
- Level: 66
Points: 646
- Level: 67
Points: 662
- Level: 68
Points: 678
- Level: 69
Points: 694
- Level: 70
Points: 710
- Level: 71
Points: 727
- Level: 72
Points: 744
- Level: 73
Points: 761
- Level: 74
Points: 778
- Level: 75
Points: 795
- Level: 76
Points: 813
- Level: 77
Points: 831
- Level: 78
Points: 849
- Level: 79
Points: 867
- Level: 80
Points: 885
- Level: 81
Points: 904
- Level: 82
Points: 923
- Level: 83
Points: 942
- Level: 84
Points: 961
- Level: 85
Points: 980
- Level: 86
Points: 1000
- Level: 87
Points: 1020
- Level: 88
Points: 1040
- Level: 89
Points: 1060
- Level: 90
Points: 1080
- Level: 91
Points: 1101
- Level: 92
Points: 1122
- Level: 93
Points: 1143
- Level: 94
Points: 1164
- Level: 95
Points: 1185
- Level: 96
Points: 1207
- Level: 97
Points: 1229
- Level: 98
Points: 1251
- Level: 99
Points: 1273
- Level: 100
Points: 1295
- Level: 101
Points: 1318
- Level: 102
Points: 1341
- Level: 103
Points: 1364
- Level: 104
Points: 1387
- Level: 105
Points: 1410
- Level: 106
Points: 1434
- Level: 107
Points: 1458
- Level: 108
Points: 1482
- Level: 109
Points: 1506
- Level: 110
Points: 1530
- Level: 111
Points: 1555
- Level: 112
Points: 1580
- Level: 113
Points: 1605
- Level: 114
Points: 1630
- Level: 115
Points: 1655
- Level: 116
Points: 1681
- Level: 117
Points: 1707
- Level: 118
Points: 1733
- Level: 119
Points: 1759
- Level: 120
Points: 1785
- Level: 121
Points: 1812
- Level: 122
Points: 1839
- Level: 123
Points: 1866
- Level: 124
Points: 1893
- Level: 125
Points: 1920
- Level: 126
Points: 1948
- Level: 127
Points: 1976
- Level: 128
Points: 2004
- Level: 129
Points: 2032
- Level: 130
Points: 2060
- Level: 131
Points: 2089
- Level: 132
Points: 2118
- Level: 133
Points: 2147
- Level: 134
Points: 2176
- Level: 135
Points: 2205
- Level: 136
Points: 2235
- Level: 137
Points: 2265
- Level: 138
Points: 2295
- Level: 139
Points: 2325
- Level: 140
Points: 2355
- Level: 141
Points: 2386
- Level: 142
Points: 2417
- Level: 143
Points: 2448
- Level: 144
Points: 2479
- Level: 145
Points: 2510
- Level: 146
Points: 2542
- Level: 147
Points: 2574
- Level: 148
Points: 2606
- Level: 149
Points: 2638
- Level: 150
Points: 2670
- Level: 151
Points: 2703
- Level: 152
Points: 2736
- Level: 153
Points: 2769
- Level: 154
Points: 2802
- Level: 155
Points: 2835
- Level: 156
Points: 2869
- Level: 157
Points: 2903
- Level: 158
Points: 2937
- Level: 159
Points: 2971
- Level: 160
Points: 3005
- Level: 161
Points: 3040
- Level: 162
Points: 3075
- Level: 163
Points: 3110
- Level: 164
Points: 3145
- Level: 165
Points: 3180
- Level: 166
Points: 3216
- Level: 167
Points: 3252
- Level: 168
Points: 3288
- Level: 169
Points: 3324
- Level: 170
Points: 3360
- Level: 171
Points: 3397
- Level: 172
Points: 3434
- Level: 173
Points: 3471
- Level: 174
Points: 3508
- Level: 175
Points: 3545
- Level: 176
Points: 3583
- Level: 177
Points: 3621
- Level: 178
Points: 3659
- Level: 179
Points: 3697
- Level: 180
Points: 3735
- Level: 181
Points: 3774
- Level: 182
Points: 3813
- Level: 183
Points: 3852
- Level: 184
Points: 3891
- Level: 185
Points: 3930
- Level: 186
Points: 3970
- Level: 187
Points: 4010
- Level: 188
Points: 4050
- Level: 189
Points: 4090
- Level: 190
Points: 4130
- Level: 191
Points: 4171
- Level: 192
Points: 4212
- Level: 193
Points: 4253
- Level: 194
Points: 4294
- Level: 195
Points: 4335
- Level: 196
Points: 4377
- Level: 197
Points: 4419
- Level: 198
Points: 4461
- Level: 199
Points: 4503
- Level: 200
Points: 4545
# - Level: 201
# Points: 4588
# - Level: 202
# Points: 4631
# - Level: 203
# Points: 4674
# - Level: 204
# Points: 4717
# - Level: 205
# Points: 4760
# - Level: 206
# Points: 4804
# - Level: 207
# Points: 4848
# - Level: 208
# Points: 4892
# - Level: 209
# Points: 4936
# - Level: 210
# Points: 4980
# - Level: 211
# Points: 5025
# - Level: 212
# Points: 5070
# - Level: 213
# Points: 5115
# - Level: 214
# Points: 5160
# - Level: 215
# Points: 5205
# - Level: 216
# Points: 5251
# - Level: 217
# Points: 5297
# - Level: 218
# Points: 5343
# - Level: 219
# Points: 5389
# - Level: 220
# Points: 5435
# - Level: 221
# Points: 5482
# - Level: 222
# Points: 5529
# - Level: 223
# Points: 5576
# - Level: 224
# Points: 5623
# - Level: 225
# Points: 5670
# - Level: 226
# Points: 5718
# - Level: 227
# Points: 5766
# - Level: 228
# Points: 5814
# - Level: 229
# Points: 5862
# - Level: 230
# Points: 5910
# - Level: 231
# Points: 5959
# - Level: 232
# Points: 6008
# - Level: 233
# Points: 6057
# - Level: 234
# Points: 6106
# - Level: 235
# Points: 6155
# - Level: 236
# Points: 6205
# - Level: 237
# Points: 6255
# - Level: 238
# Points: 6305
# - Level: 239
# Points: 6355
# - Level: 240
# Points: 6405
# - Level: 241
# Points: 6456
# - Level: 242
# Points: 6507
# - Level: 243
# Points: 6558
# - Level: 244
# Points: 6609
# - Level: 245
# Points: 6660
# - Level: 246
# Points: 6712
# - Level: 247
# Points: 6764
# - Level: 248
# Points: 6816
# - Level: 249
# Points: 6868
# - Level: 250
# Points: 6920
# - Level: 251
# Points: 6973
# - Level: 252
# Points: 7026
# - Level: 253
# Points: 7079
# - Level: 254
# Points: 7132
# - Level: 255
# Points: 7185

View File

@ -1,255 +0,0 @@
48
51
54
57
60
64
68
72
76
80
85
90
95
100
105
111
117
123
129
135
142
149
156
163
170
178
186
194
202
210
219
228
237
246
255
265
275
285
295
305
316
327
338
349
360
372
384
396
408
420
433
446
459
472
485
499
513
527
541
555
570
585
600
615
630
646
662
678
694
710
727
744
761
778
795
813
831
849
867
885
904
923
942
961
980
1000
1020
1040
1060
1080
1101
1122
1143
1164
1185
1207
1229
1251
1273
1295
1318
1341
1364
1387
1410
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
2741
2770
2799
2828
2857
2886
2915
2944
2974
3004
3034
3064
3094
3124
3154
3185
3216
3247
3278
3295
3325
3355
3385
3415
3446
3477
3508
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
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

543
db/re/statpoint.yml Normal file
View File

@ -0,0 +1,543 @@
# This file is a part of rAthena.
# Copyright(C) 2021 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Statpoint Database
###########################################################################
#
# Statpoint Settings
#
###########################################################################
# - Level BaseLevel required.
# Points Total status points given from BaseLevel 1 to 'Level'.
###########################################################################
Header:
Type: STATPOINT_DB
Version: 1
Body:
- Level: 1
Points: 48
- Level: 2
Points: 51
- Level: 3
Points: 54
- Level: 4
Points: 57
- Level: 5
Points: 60
- Level: 6
Points: 64
- Level: 7
Points: 68
- Level: 8
Points: 72
- Level: 9
Points: 76
- Level: 10
Points: 80
- Level: 11
Points: 85
- Level: 12
Points: 90
- Level: 13
Points: 95
- Level: 14
Points: 100
- Level: 15
Points: 105
- Level: 16
Points: 111
- Level: 17
Points: 117
- Level: 18
Points: 123
- Level: 19
Points: 129
- Level: 20
Points: 135
- Level: 21
Points: 142
- Level: 22
Points: 149
- Level: 23
Points: 156
- Level: 24
Points: 163
- Level: 25
Points: 170
- Level: 26
Points: 178
- Level: 27
Points: 186
- Level: 28
Points: 194
- Level: 29
Points: 202
- Level: 30
Points: 210
- Level: 31
Points: 219
- Level: 32
Points: 228
- Level: 33
Points: 237
- Level: 34
Points: 246
- Level: 35
Points: 255
- Level: 36
Points: 265
- Level: 37
Points: 275
- Level: 38
Points: 285
- Level: 39
Points: 295
- Level: 40
Points: 305
- Level: 41
Points: 316
- Level: 42
Points: 327
- Level: 43
Points: 338
- Level: 44
Points: 349
- Level: 45
Points: 360
- Level: 46
Points: 372
- Level: 47
Points: 384
- Level: 48
Points: 396
- Level: 49
Points: 408
- Level: 50
Points: 420
- Level: 51
Points: 433
- Level: 52
Points: 446
- Level: 53
Points: 459
- Level: 54
Points: 472
- Level: 55
Points: 485
- Level: 56
Points: 499
- Level: 57
Points: 513
- Level: 58
Points: 527
- Level: 59
Points: 541
- Level: 60
Points: 555
- Level: 61
Points: 570
- Level: 62
Points: 585
- Level: 63
Points: 600
- Level: 64
Points: 615
- Level: 65
Points: 630
- Level: 66
Points: 646
- Level: 67
Points: 662
- Level: 68
Points: 678
- Level: 69
Points: 694
- Level: 70
Points: 710
- Level: 71
Points: 727
- Level: 72
Points: 744
- Level: 73
Points: 761
- Level: 74
Points: 778
- Level: 75
Points: 795
- Level: 76
Points: 813
- Level: 77
Points: 831
- Level: 78
Points: 849
- Level: 79
Points: 867
- Level: 80
Points: 885
- Level: 81
Points: 904
- Level: 82
Points: 923
- Level: 83
Points: 942
- Level: 84
Points: 961
- Level: 85
Points: 980
- Level: 86
Points: 1000
- Level: 87
Points: 1020
- Level: 88
Points: 1040
- Level: 89
Points: 1060
- Level: 90
Points: 1080
- Level: 91
Points: 1101
- Level: 92
Points: 1122
- Level: 93
Points: 1143
- Level: 94
Points: 1164
- Level: 95
Points: 1185
- Level: 96
Points: 1207
- Level: 97
Points: 1229
- Level: 98
Points: 1251
- Level: 99
Points: 1273
- Level: 100
Points: 1295
- Level: 101
Points: 1318
- Level: 102
Points: 1341
- Level: 103
Points: 1364
- Level: 104
Points: 1387
- Level: 105
Points: 1410
- Level: 106
Points: 1433
- Level: 107
Points: 1456
- Level: 108
Points: 1479
- Level: 109
Points: 1502
- Level: 110
Points: 1525
- Level: 111
Points: 1549
- Level: 112
Points: 1573
- Level: 113
Points: 1597
- Level: 114
Points: 1621
- Level: 115
Points: 1645
- Level: 116
Points: 1669
- Level: 117
Points: 1693
- Level: 118
Points: 1717
- Level: 119
Points: 1741
- Level: 120
Points: 1765
- Level: 121
Points: 1790
- Level: 122
Points: 1815
- Level: 123
Points: 1840
- Level: 124
Points: 1865
- Level: 125
Points: 1890
- Level: 126
Points: 1915
- Level: 127
Points: 1940
- Level: 128
Points: 1965
- Level: 129
Points: 1990
- Level: 130
Points: 2015
- Level: 131
Points: 2041
- Level: 132
Points: 2067
- Level: 133
Points: 2093
- Level: 134
Points: 2119
- Level: 135
Points: 2145
- Level: 136
Points: 2171
- Level: 137
Points: 2197
- Level: 138
Points: 2223
- Level: 139
Points: 2249
- Level: 140
Points: 2275
- Level: 141
Points: 2302
- Level: 142
Points: 2329
- Level: 143
Points: 2356
- Level: 144
Points: 2383
- Level: 145
Points: 2410
- Level: 146
Points: 2437
- Level: 147
Points: 2464
- Level: 148
Points: 2491
- Level: 149
Points: 2518
- Level: 150
Points: 2545
- Level: 151
Points: 2573
- Level: 152
Points: 2601
- Level: 153
Points: 2629
- Level: 154
Points: 2657
- Level: 155
Points: 2685
- Level: 156
Points: 2713
- Level: 157
Points: 2741
- Level: 158
Points: 2770
- Level: 159
Points: 2799
- Level: 160
Points: 2828
- Level: 161
Points: 2857
- Level: 162
Points: 2886
- Level: 163
Points: 2915
- Level: 164
Points: 2944
- Level: 165
Points: 2974
- Level: 166
Points: 3004
- Level: 167
Points: 3034
- Level: 168
Points: 3064
- Level: 169
Points: 3094
- Level: 170
Points: 3124
- Level: 171
Points: 3154
- Level: 172
Points: 3185
- Level: 173
Points: 3216
- Level: 174
Points: 3247
- Level: 175
Points: 3278
- Level: 176
Points: 3295
- Level: 177
Points: 3325
- Level: 178
Points: 3355
- Level: 179
Points: 3385
- Level: 180
Points: 3415
- Level: 181
Points: 3446
- Level: 182
Points: 3477
- Level: 183
Points: 3508
- Level: 184
Points: 3539
- Level: 185
Points: 3570
- Level: 186
Points: 3601
- Level: 187
Points: 3632
- Level: 188
Points: 3663
- Level: 189
Points: 3694
- Level: 190
Points: 3725
- Level: 191
Points: 3757
- Level: 192
Points: 3789
- Level: 193
Points: 3821
- Level: 194
Points: 3853
- Level: 195
Points: 3885
- Level: 196
Points: 3917
- Level: 197
Points: 3949
- Level: 198
Points: 3981
- Level: 199
Points: 4013
- Level: 200
Points: 4045
# - Level: 201
# Points: 4078
# - Level: 202
# Points: 4111
# - Level: 203
# Points: 4114
# - Level: 204
# Points: 4177
# - Level: 205
# Points: 4210
# - Level: 206
# Points: 4243
# - Level: 207
# Points: 4276
# - Level: 208
# Points: 4309
# - Level: 209
# Points: 4342
# - Level: 210
# Points: 4375
# - Level: 211
# Points: 4409
# - Level: 212
# Points: 4443
# - Level: 213
# Points: 4477
# - Level: 214
# Points: 4511
# - Level: 215
# Points: 4545
# - Level: 216
# Points: 4579
# - Level: 217
# Points: 4613
# - Level: 218
# Points: 4647
# - Level: 219
# Points: 4681
# - Level: 220
# Points: 4715
# - Level: 221
# Points: 4750
# - Level: 222
# Points: 4785
# - Level: 223
# Points: 4820
# - Level: 224
# Points: 4855
# - Level: 225
# Points: 4890
# - Level: 226
# Points: 4925
# - Level: 227
# Points: 4960
# - Level: 228
# Points: 5030
# - Level: 229
# Points: 5065
# - Level: 230
# Points: 5100
# - Level: 231
# Points: 5136
# - Level: 232
# Points: 5172
# - Level: 233
# Points: 5208
# - Level: 234
# Points: 5244
# - Level: 235
# Points: 5280
# - Level: 236
# Points: 5316
# - Level: 237
# Points: 5352
# - Level: 238
# Points: 5388
# - Level: 239
# Points: 5424
# - Level: 240
# Points: 5460
# - Level: 241
# Points: 5497
# - Level: 242
# Points: 5537
# - Level: 243
# Points: 5571
# - Level: 244
# Points: 5608
# - Level: 245
# Points: 5645
# - Level: 246
# Points: 5682
# - Level: 247
# Points: 5719
# - Level: 248
# Points: 5793
# - Level: 249
# Points: 5830
# - Level: 250
# Points: 5868
# - Level: 251
# Points: 5906
# - Level: 252
# Points: 5944
# - Level: 253
# Points: 5982
# - Level: 254
# Points: 6020
# - Level: 255
# Points: 6058

39
db/statpoint.yml Normal file
View File

@ -0,0 +1,39 @@
# This file is a part of rAthena.
# Copyright(C) 2021 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Statpoint Database
###########################################################################
#
# Statpoint Settings
#
###########################################################################
# - Level BaseLevel required.
# Points Total status points given from BaseLevel 1 to 'Level'.
###########################################################################
Header:
Type: STATPOINT_DB
Version: 1
Footer:
Imports:
- Path: db/pre-re/statpoint.yml
Mode: Prerenewal
- Path: db/re/statpoint.yml
Mode: Renewal
- Path: db/import/statpoint.yml

10
doc/yaml/db/statpoint.yml Normal file
View File

@ -0,0 +1,10 @@
###########################################################################
# Statpoint Database
###########################################################################
#
# Statpoint Settings
#
###########################################################################
# - Level BaseLevel required.
# Points Total status points given from BaseLevel 1 to 'Level'.
###########################################################################

View File

@ -1448,7 +1448,7 @@ int char_make_new_char( struct char_session_data* sd, char* name_, int str, int
status_points = 0;
#else
status_points = 48;
status_points = charserv_config.start_status_points;
#endif
// check the number of already existing chars in this account
@ -2639,6 +2639,8 @@ void char_sql_config_read(const char* cfgName) {
safestrncpy(schema_config.clan_alliance_table, w2, sizeof(schema_config.clan_alliance_table));
else if(!strcmpi(w1,"achievement_table"))
safestrncpy(schema_config.achievement_table, w2, sizeof(schema_config.achievement_table));
else if(!strcmpi(w1, "start_status_points"))
charserv_config.start_status_points = atoi(w2);
//support the import command, just like any other config
else if(!strcmpi(w1,"import"))
char_sql_config_read(w2);
@ -2770,6 +2772,8 @@ void char_set_defaults(){
charserv_config.start_items_doram[1].pos = EQP_ARMOR;
#endif
charserv_config.start_status_points = 48;
charserv_config.console = 0;
charserv_config.max_connect_user = -1;
charserv_config.gm_allow_group = -1;

View File

@ -173,6 +173,7 @@ struct CharServ_Config {
struct point start_point[MAX_STARTPOINT], start_point_doram[MAX_STARTPOINT]; // Initial position the player will spawn on the server
short start_point_count, start_point_count_doram; // Number of positions read
struct startitem start_items[MAX_STARTITEM], start_items_doram[MAX_STARTITEM]; // Initial items the player with spawn with on the server
uint32 start_status_points;
int console;
int max_connect_user;
int gm_allow_group;

View File

@ -1552,7 +1552,7 @@ ACMD_FUNC(baselevelup)
if ((unsigned int)level > pc_maxbaselv(sd) || (unsigned int)level > pc_maxbaselv(sd) - sd->status.base_level) // fix positive overflow
level = pc_maxbaselv(sd) - sd->status.base_level;
for (i = 0; i < level; i++)
status_point += pc_gets_status_point(sd->status.base_level + i);
status_point += statpoint_db.pc_gets_status_point(sd->status.base_level + i);
sd->status.status_point += status_point;
sd->status.base_level += (unsigned int)level;
@ -1573,7 +1573,7 @@ ACMD_FUNC(baselevelup)
if ((unsigned int)level >= sd->status.base_level)
level = sd->status.base_level-1;
for (i = 0; i > -level; i--)
status_point += pc_gets_status_point(sd->status.base_level + i - 1);
status_point += statpoint_db.pc_gets_status_point(sd->status.base_level + i - 1);
if (sd->status.status_point < status_point)
pc_resetstate(sd);
if (sd->status.status_point < status_point)

View File

@ -353,7 +353,7 @@
<Copy SourceFiles="$(SolutionDir)db\import-tmpl\skill_nocast_db.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\skill_nocast_db.txt')" />
<Copy SourceFiles="$(SolutionDir)db\import-tmpl\skill_tree.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\skill_tree.txt')" />
<Copy SourceFiles="$(SolutionDir)db\import-tmpl\spellbook_db.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\spellbook_db.yml')" />
<Copy SourceFiles="$(SolutionDir)db\import-tmpl\statpoint.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\statpoint.txt')" />
<Copy SourceFiles="$(SolutionDir)db\import-tmpl\statpoint.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\statpoint.yml')" />
<Copy SourceFiles="$(SolutionDir)db\import-tmpl\status_disabled.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\status_disabled.txt')" />
</Target>
</Project>

View File

@ -97,6 +97,8 @@ char log_db_pw[32] = "";
char log_db_db[32] = "log";
Sql* logmysql_handle;
uint32 start_status_points = 48;
// DBMap declaration
static DBMap* id_db=NULL; /// int id -> struct block_list*
static DBMap* pc_db=NULL; /// int id -> struct map_session_data*
@ -4251,6 +4253,9 @@ int inter_config_read(const char *cfgName)
if(strcmpi(w1,"log_db_db")==0)
safestrncpy(log_db_db, w2, sizeof(log_db_db));
else
if(strcmpi(w1,"start_status_points")==0)
start_status_points=atoi(w2);
else
if( mapreg_config_read(w1,w2) )
continue;
//support the import command, just like any other config

View File

@ -781,6 +781,8 @@ extern int16 save_settings;
extern int night_flag; // 0=day, 1=night [Yor]
extern int enable_spy; //Determines if @spy commands are active.
extern uint32 start_status_points;
// Agit Flags
extern bool agit_flag;
extern bool agit2_flag;

View File

@ -66,7 +66,7 @@ static inline bool pc_attendance_rewarded_today( struct map_session_data* sd );
#define PVP_CALCRANK_INTERVAL 1000 // PVP calculation interval
static unsigned int statp[MAX_LEVEL+1];
PlayerStatPointDatabase statpoint_db;
// h-files are for declarations, not for implementations... [Shinomori]
struct skill_tree_entry skill_tree[CLASS_COUNT][MAX_SKILL_TREE];
@ -7181,7 +7181,7 @@ int pc_checkbaselevelup(struct map_session_data *sd) {
if( ( !battle_config.multi_level_up || ( battle_config.multi_level_up_base > 0 && sd->status.base_level >= battle_config.multi_level_up_base ) ) && sd->status.base_exp > next-1 )
sd->status.base_exp = next-1;
sd->status.status_point += pc_gets_status_point(sd->status.base_level++);
sd->status.status_point += statpoint_db.pc_gets_status_point(sd->status.base_level++);
if( pc_is_maxbaselv(sd) ){
sd->status.base_exp = u64min(sd->status.base_exp,MAX_LEVEL_BASE_EXP);
@ -7595,14 +7595,25 @@ static int pc_setstat(struct map_session_data* sd, int type, int val)
return val;
}
/**
* Gets the total number of status points at the provided level.
* @param level: Player base level.
* @return Total number of status points at specific base level.
*/
uint32 PlayerStatPointDatabase::get_table_point(uint16 level) {
return this->statpoint_table[level];
}
// Calculates the number of status points PC gets when leveling up (from level to level+1)
int pc_gets_status_point(int level)
{
if (battle_config.use_statpoint_table) //Use values from "db/statpoint.txt"
return (statp[level+1] - statp[level]);
else //Default increase
return ((level+15) / 5);
/**
* Calculates the number of status points PC gets when leveling up (from level to level+1)
* @param level: Player base level.
* @param table: Use table value or formula.
* @return Status points at specific base level.
*/
uint32 PlayerStatPointDatabase::pc_gets_status_point(uint16 level) {
if (this->statpoint_table[level+1] > this->statpoint_table[level])
return (this->statpoint_table[level+1] - this->statpoint_table[level]);
return 0;
}
#ifdef RENEWAL_STAT
@ -7971,25 +7982,14 @@ int pc_resetstate(struct map_session_data* sd)
{
nullpo_ret(sd);
if (battle_config.use_statpoint_table)
{ // New statpoint table used here - Dexity
if (sd->status.base_level > MAX_LEVEL)
{ //statp[] goes out of bounds, can't reset!
ShowError("pc_resetstate: Can't reset stats of %d:%d, the base level (%d) is greater than the max level supported (%d)\n",
sd->status.account_id, sd->status.char_id, sd->status.base_level, MAX_LEVEL);
return 0;
}
sd->status.status_point = statp[sd->status.base_level];
if( sd->status.base_level > pc_maxbaselv( sd ) ){
ShowError( "pc_resetstate: Capping the Level to %d to reset the stats of %d:%d, the base level (%d) is greater than the max level supported.\n",
pc_maxbaselv( sd ), sd->status.account_id, sd->status.char_id, sd->status.base_level );
sd->status.base_level = pc_maxbaselv( sd );
clif_updatestatus( sd, SP_BASELEVEL );
}
else
{
sd->status.status_point = 48;
for( int i = 1; i < sd->status.base_level; i++ ){
sd->status.status_point += pc_gets_status_point( i );
}
}
sd->status.status_point = statpoint_db.get_table_point( sd->status.base_level );
if( ( sd->class_&JOBL_UPPER ) != 0 ){
sd->status.status_point += battle_config.transcendent_status_points;
@ -8962,7 +8962,7 @@ bool pc_setparam(struct map_session_data *sd,int64 type,int64 val_tmp)
int i = 0;
int stat=0;
for (i = 0; i < (int)(val - sd->status.base_level); i++)
stat += pc_gets_status_point(sd->status.base_level + i);
stat += statpoint_db.pc_gets_status_point(sd->status.base_level + i);
sd->status.status_point += stat;
}
sd->status.base_level = val;
@ -12324,36 +12324,60 @@ static bool pc_readdb_job_noenter_map(char *str[], int columns, int current) {
return true;
}
static int pc_read_statsdb(const char *basedir, int last_s, bool silent){
int i=1;
char line[24000]; //FIXME this seem too big
FILE *fp;
sprintf(line, "%s/statpoint.txt", basedir);
fp=fopen(line,"r");
if(fp == NULL){
if(silent==0) ShowWarning("Can't read '" CL_WHITE "%s" CL_RESET "'... Generating DB.\n",line);
return max(last_s,i);
} else {
int entries=0;
while(fgets(line, sizeof(line), fp))
{
int stat;
trim(line);
if(line[0] == '\0' || (line[0]=='/' && line[1]=='/'))
continue;
if ((stat=strtoul(line,NULL,10))<0)
stat=0;
if (i > MAX_LEVEL)
break;
statp[i]=stat;
i++;
entries++;
}
fclose(fp);
ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s/%s" CL_RESET "'.\n", entries, basedir,"statpoint.txt");
const std::string PlayerStatPointDatabase::getDefaultLocation() {
return std::string(db_path) + "/statpoint.yml";
}
uint64 PlayerStatPointDatabase::parseBodyNode(const YAML::Node &node) {
if (!this->nodesExist(node, { "Level", "Points" })) {
return 0;
}
uint16 level;
if (!this->asUInt16(node, "Level", level))
return 0;
uint32 point;
if (!this->asUInt32(node, "Points", point))
return 0;
if (level == 0) {
this->invalidWarning(node["Level"], "The minimum level is 1.\n");
return 0;
}
if (level > MAX_LEVEL) {
this->invalidWarning(node["Level"], "Level %d exceeds maximum BaseLevel %d, skipping.\n", level, MAX_LEVEL);
return 0;
}
this->statpoint_table[level] = point;
return 1;
}
/**
* Generate the remaining parts of the db if necessary.
*/
void PlayerStatPointDatabase::loadingFinished() {
if( battle_config.use_statpoint_table ){
this->statpoint_table[1] = start_status_points;
}
if( this->statpoint_table[1] != start_status_points ){
ShowError( "Status points for Level 1 (=%d) do not match inter_athena.conf value (=%d).\n", this->statpoint_table[1], start_status_points );
this->statpoint_table[1] = start_status_points;
}
for (uint16 level = 2; level <= MAX_LEVEL; level++) {
if (!battle_config.use_statpoint_table || util::umap_find(this->statpoint_table, level) == nullptr) {
if (battle_config.use_statpoint_table)
ShowError("Missing status points for Level %d\n", level);
this->statpoint_table[level] = this->statpoint_table[level-1] + ((level-1+15) / 5);
}
}
return max(last_s,i);
}
/*==========================================
@ -12366,7 +12390,7 @@ static int pc_read_statsdb(const char *basedir, int last_s, bool silent){
* job_maxhpsp_db.txt - strtlvl,maxlvl,job,type,values/lvl (values=hp|sp)
*------------------------------------------*/
void pc_readdb(void) {
int i, k, s = 1;
int i, s = 1;
const char* dbsubpath[] = {
"",
"/" DBIMPORT,
@ -12380,8 +12404,8 @@ void pc_readdb(void) {
penalty_db.load();
#endif
// reset then read statspoint
memset(statp,0,sizeof(statp));
statpoint_db.clear();
for(i=0; i<ARRAYLENGTH(dbsubpath); i++){
uint8 n1 = (uint8)(strlen(db_path)+strlen(dbsubpath[i])+1);
uint8 n2 = (uint8)(strlen(db_path)+strlen(DBPATH)+strlen(dbsubpath[i])+1);
@ -12397,7 +12421,6 @@ void pc_readdb(void) {
safesnprintf(dbsubpath2,n1,"%s%s",db_path,dbsubpath[i]);
}
s = pc_read_statsdb(dbsubpath2,s,i > 0);
if (i == 0)
#ifdef RENEWAL_ASPD // Paths are hardcoded here to specifically pick the correct database
sv_readdb(dbsubpath1, "re/job_db1.txt",',',6+MAX_WEAPON_TYPE,6+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, false);
@ -12422,14 +12445,8 @@ void pc_readdb(void) {
sv_readdb(db_path, DBPATH"skill_tree.txt", ',', 3 + MAX_PC_SKILL_REQUIRE * 2, 5 + MAX_PC_SKILL_REQUIRE * 2, -1, &pc_readdb_skilltree, 0);
sv_readdb(db_path, DBIMPORT"/skill_tree.txt", ',', 3 + MAX_PC_SKILL_REQUIRE * 2, 5 + MAX_PC_SKILL_REQUIRE * 2, -1, &pc_readdb_skilltree, 1);
// generate the remaining parts of the db if necessary
k = battle_config.use_statpoint_table; //save setting
battle_config.use_statpoint_table = 0; //temporarily disable to force pc_gets_status_point use default values
statp[0] = 45; // seed value
for (; s <= MAX_LEVEL; s++)
statp[s] = statp[s-1] + pc_gets_status_point(s-1);
battle_config.use_statpoint_table = k; //restore setting
statpoint_db.load();
//Checking if all class have their data
for (i = 0; i < JOB_MAX; i++) {
int idx;

View File

@ -1117,6 +1117,28 @@ public:
extern AttendanceDatabase attendance_db;
class PlayerStatPointDatabase : public YamlDatabase {
private:
std::unordered_map<uint16, uint32> statpoint_table;
public:
PlayerStatPointDatabase() : YamlDatabase("STATPOINT_DB", 1) {
}
void clear(){
statpoint_table.clear();
}
const std::string getDefaultLocation();
uint64 parseBodyNode(const YAML::Node& node);
void loadingFinished();
uint32 pc_gets_status_point(uint16 level);
uint32 get_table_point(uint16 level);
};
extern PlayerStatPointDatabase statpoint_db;
/// Enum of Summoner Power of
enum e_summoner_power_type {
SUMMONER_POWER_LAND = 0,
@ -1261,7 +1283,6 @@ void pc_gainexp_disp(struct map_session_data *sd, t_exp base_exp, t_exp next_bas
void pc_lostexp(struct map_session_data *sd, t_exp base_exp, t_exp job_exp);
t_exp pc_nextbaseexp(struct map_session_data *sd);
t_exp pc_nextjobexp(struct map_session_data *sd);
int pc_gets_status_point(int);
int pc_need_status_point(struct map_session_data *,int,int);
int pc_maxparameterincrease(struct map_session_data*,int);
bool pc_statusup(struct map_session_data*,int,int);

View File

@ -343,6 +343,17 @@ int do_init( int argc, char** argv ){
return 0;
}
if (!process("STATPOINT_DB", 1, { path_db_mode }, "statpoint", [](const std::string &path, const std::string &name_ext) -> bool {
return pc_read_statsdb((path + name_ext).c_str());
})) {
return 0;
}
if (!process("STATPOINT_DB", 1, { path_db_import }, "statpoint", [](const std::string &path, const std::string &name_ext) -> bool {
return pc_read_statsdb((path + name_ext).c_str());
})) {
return 0;
}
// TODO: add implementations ;-)
return 0;
@ -3666,3 +3677,35 @@ static bool skill_parse_row_createarrowdb(char* split[], int columns, int curren
return true;
}
// Copied and adjusted from pc.cpp
static bool pc_read_statsdb(const char* file) {
FILE* fp = fopen( file, "r" );
if( fp == nullptr ){
ShowError( "Can't read %s\n", file );
return false;
}
uint32 lines = 0, count = 0;
char line[1024];
while (fgets(line, sizeof(line), fp)) {
lines++;
trim(line);
if (line[0] == '/' && line[1] == '/') // Ignore comments
continue;
body << YAML::BeginMap;
body << YAML::Key << "Level" << YAML::Value << (count+1);
body << YAML::Key << "Points" << YAML::Value << static_cast<uint32>(strtoul(line, nullptr, 10));
body << YAML::EndMap;
count++;
}
fclose(fp);
ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, file);
return true;
}

View File

@ -423,5 +423,6 @@ static bool read_homunculus_expdb(const char* file);
static bool mob_readdb_group(char* str[], int columns, int current);
static bool mob_readdb_group_yaml(void);
static bool skill_parse_row_createarrowdb(char* fields[], int columns, int current);
static bool pc_read_statsdb(const char* file);
#endif /* CSV2YAML_HPP */