From f230b13ded01874af79251c5a24b18d28e89470e Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 5 Jul 2021 19:06:49 +0200 Subject: [PATCH] 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 Co-authored-by: Aleos --- conf/inter_athena.conf | 3 + db/import-tmpl/statpoint.txt | 2 - db/import-tmpl/statpoint.yml | 31 ++ db/pre-re/statpoint.txt | 255 ---------------- db/pre-re/statpoint.yml | 543 +++++++++++++++++++++++++++++++++++ db/re/statpoint.txt | 255 ---------------- db/re/statpoint.yml | 543 +++++++++++++++++++++++++++++++++++ db/statpoint.yml | 39 +++ doc/yaml/db/statpoint.yml | 10 + src/char/char.cpp | 6 +- src/char/char.hpp | 1 + src/map/atcommand.cpp | 4 +- src/map/map-server.vcxproj | 2 +- src/map/map.cpp | 5 + src/map/map.hpp | 2 + src/map/pc.cpp | 153 +++++----- src/map/pc.hpp | 23 +- src/tool/csv2yaml.cpp | 43 +++ src/tool/csv2yaml.hpp | 1 + 19 files changed, 1336 insertions(+), 585 deletions(-) delete mode 100644 db/import-tmpl/statpoint.txt create mode 100644 db/import-tmpl/statpoint.yml delete mode 100644 db/pre-re/statpoint.txt create mode 100644 db/pre-re/statpoint.yml delete mode 100644 db/re/statpoint.txt create mode 100644 db/re/statpoint.yml create mode 100644 db/statpoint.yml create mode 100644 doc/yaml/db/statpoint.yml diff --git a/conf/inter_athena.conf b/conf/inter_athena.conf index e60be22ef1..39032f0175 100644 --- a/conf/inter_athena.conf +++ b/conf/inter_athena.conf @@ -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: diff --git a/db/import-tmpl/statpoint.txt b/db/import-tmpl/statpoint.txt deleted file mode 100644 index 7006e04297..0000000000 --- a/db/import-tmpl/statpoint.txt +++ /dev/null @@ -1,2 +0,0 @@ -//statpoint per lvl - diff --git a/db/import-tmpl/statpoint.yml b/db/import-tmpl/statpoint.yml new file mode 100644 index 0000000000..04710362e8 --- /dev/null +++ b/db/import-tmpl/statpoint.yml @@ -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 . +# +########################################################################### +# Statpoint Database +########################################################################### +# +# Statpoint Settings +# +########################################################################### +# - Level BaseLevel required. +# Points Total status points given from BaseLevel 1 to 'Level'. +########################################################################### + +Header: + Type: STATPOINT_DB + Version: 1 diff --git a/db/pre-re/statpoint.txt b/db/pre-re/statpoint.txt deleted file mode 100644 index 1b3f3d8939..0000000000 --- a/db/pre-re/statpoint.txt +++ /dev/null @@ -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 diff --git a/db/pre-re/statpoint.yml b/db/pre-re/statpoint.yml new file mode 100644 index 0000000000..aac75b3e6d --- /dev/null +++ b/db/pre-re/statpoint.yml @@ -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 . +# +########################################################################### +# 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 diff --git a/db/re/statpoint.txt b/db/re/statpoint.txt deleted file mode 100644 index 5b23299839..0000000000 --- a/db/re/statpoint.txt +++ /dev/null @@ -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 diff --git a/db/re/statpoint.yml b/db/re/statpoint.yml new file mode 100644 index 0000000000..ed8e96a7b6 --- /dev/null +++ b/db/re/statpoint.yml @@ -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 . +# +########################################################################### +# 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 diff --git a/db/statpoint.yml b/db/statpoint.yml new file mode 100644 index 0000000000..690192de2e --- /dev/null +++ b/db/statpoint.yml @@ -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 . +# +########################################################################### +# 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 diff --git a/doc/yaml/db/statpoint.yml b/doc/yaml/db/statpoint.yml new file mode 100644 index 0000000000..3d5a497082 --- /dev/null +++ b/doc/yaml/db/statpoint.yml @@ -0,0 +1,10 @@ +########################################################################### +# Statpoint Database +########################################################################### +# +# Statpoint Settings +# +########################################################################### +# - Level BaseLevel required. +# Points Total status points given from BaseLevel 1 to 'Level'. +########################################################################### diff --git a/src/char/char.cpp b/src/char/char.cpp index 4711a15ba1..3aea9bfeb3 100644 --- a/src/char/char.cpp +++ b/src/char/char.cpp @@ -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; diff --git a/src/char/char.hpp b/src/char/char.hpp index 6db2ea75f1..437095d600 100644 --- a/src/char/char.hpp +++ b/src/char/char.hpp @@ -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; diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 62d7862157..67f3db35c8 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -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) diff --git a/src/map/map-server.vcxproj b/src/map/map-server.vcxproj index de4e1a2e46..413c533273 100644 --- a/src/map/map-server.vcxproj +++ b/src/map/map-server.vcxproj @@ -353,7 +353,7 @@ - + diff --git a/src/map/map.cpp b/src/map/map.cpp index 5313dcd2e8..fd1f81aee8 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -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 diff --git a/src/map/map.hpp b/src/map/map.hpp index 35abfd372f..e678326db5 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -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; diff --git a/src/map/pc.cpp b/src/map/pc.cpp index 39ed9f4695..7fbead9c1b 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -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 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; diff --git a/src/map/pc.hpp b/src/map/pc.hpp index 25bbb57ce1..5a4f24955c 100644 --- a/src/map/pc.hpp +++ b/src/map/pc.hpp @@ -1117,6 +1117,28 @@ public: extern AttendanceDatabase attendance_db; +class PlayerStatPointDatabase : public YamlDatabase { +private: + std::unordered_map 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); diff --git a/src/tool/csv2yaml.cpp b/src/tool/csv2yaml.cpp index 005448e278..fff1ec2132 100644 --- a/src/tool/csv2yaml.cpp +++ b/src/tool/csv2yaml.cpp @@ -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(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; +} diff --git a/src/tool/csv2yaml.hpp b/src/tool/csv2yaml.hpp index cc0bd92a83..5c4be9b84e 100644 --- a/src/tool/csv2yaml.hpp +++ b/src/tool/csv2yaml.hpp @@ -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 */