diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a333816..656c9c48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [6.2.0] - 2023-04-07 + +- Update counter skill +- Added options `update-counter-without-damage` and `no-update-counter-without-damage` to toggle new behaviour +- Update poison skill +- Added options `update-poison-after-attacked` and `no-update-poison-after-attacked` to toggle new behaviour + ## [6.1.0] - 2023-04-04 - Added changes of versions [4.5.0-4.8.0] to database+ml tuo version [5.0.0-6.0.0] diff --git a/data/database.yml b/data/database.yml new file mode 100644 index 00000000..ad363fa3 --- /dev/null +++ b/data/database.yml @@ -0,0 +1,600 @@ +version: 5.0.0-alpha-dirty +0;1;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,;;;0,1,1,1,1,;20;20;8;8: + DUhOYtXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 80 0 5 8000 85 + DUhPEuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 24 0 5 2400 29 + DUhUVtOYtPEuXMuXSwZV9fD+cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 2 0 764 200 766 + DUhUVtOYtPEuXMuXSwZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 58 0 22 5800 80 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 5 0 1188 500 1193 + DUhUVtOYtPEuXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 867 1 163 86700 1031 + DUhUVtOYtPEuXSwZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 71 0 24 7100 95 + DUhUVtOYtXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 4 0 395 400 399 + DUhUVtOYtXMuXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 43 0 7 4300 50 + DUhUVtOYtXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 57 0 8 5700 65 + DUhUVtOYtXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 24 0 5 2400 29 + DUhUVtOYtXSwZV9fD+cO+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 15 0 5 1500 20 + DUhUVtPEuXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1 0 229 100 230 + DUhUVtXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 2 0 230 200 232 + DUhUVtXMuXSwZV9fD+cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 8 0 591 800 599 + DUhUVtXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 62 0 6 6200 68 + DUhXMuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 37 0 5 3700 42 + DUhXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 43 0 6 4300 49 + DUhXSwZV9cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 24 0 4 2400 28 + DUhXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9 0 5 900 14 + DUhbSsOYtPEuXMuXSwZV9fD+cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 75 0 8805 7500 8880 + DUhbSsOYtPEuXMuXSwZV9fD+cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 106 0 9894 10600 10000 + DUhbSsOYtXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 3 0 340 300 343 + DUhbSsOYtXMuXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 274 0 23 27400 297 + DUhbSsOYtXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 43 0 4 4300 47 + DUhbSsOYtXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 565 0 17 56500 582 + DUhbSsOYtXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9767 1 232 976700 10000 + DUhbSsOYtZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 311 0 11 31100 322 + DUhbSsPEuXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 25 0 1325 2500 1350 + DUhbSsPEuXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 10 0 4 1000 14 + DUhbSsPEuXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 54 0 4 5400 58 + DUhbSsPEuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 100 0 8 10000 108 + DUhbSsPEuZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 35 0 4 3500 39 + DUhbSsUVtOYtPEuXMuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 1873 0 240 187300 2113 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 161 0 9839 16100 10000 + DUhbSsUVtOYtPEuXMuXSwZV9fD+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 113 0 9887 11300 10000 + DUhbSsUVtOYtPEuXMuXSwZV9fD+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 124 0 9876 12400 10000 + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 5429 1 1200 542900 6630 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 110 1 9889 11000 10000 + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 8297 0 1703 829700 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 92 1 9907 9200 10000 + DUhbSsUVtOYtPEuXSwZV9cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 198 0 34 19800 232 + DUhbSsUVtOYtPEuXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 112 0 13 11200 125 + DUhbSsUVtOYtPEuXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9020 3 977 902000 10000 + DUhbSsUVtOYtPEuXSwZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 8532 0 1468 853200 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1 0 604 100 605 + DUhbSsUVtOYtPEuXSwfD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 46 0 8 4600 54 + DUhbSsUVtOYtPEuZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 13 0 7 1300 20 + DUhbSsUVtOYtXMuXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 662 1 45 66200 708 + DUhbSsUVtOYtXMuXSwZV9Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 4 0 398 400 402 + DUhbSsUVtOYtXMuXSwZV9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 3 0 346 300 349 + DUhbSsUVtOYtXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 91 0 4921 9100 5012 + DUhbSsUVtOYtXMuXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 278 0 24 27800 302 + DUhbSsUVtOYtXMuXSwcO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1 0 232 100 233 + DUhbSsUVtOYtXMuXSwfD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 107 0 14 10700 121 + DUhbSsUVtOYtXMuZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 0 0 161 0 161 + DUhbSsUVtOYtXMuZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 384 0 32 38400 416 + DUhbSsUVtOYtXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 73 0 8 7300 81 + DUhbSsUVtOYtXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9697 0 303 969700 10000 + DUhbSsUVtOYtXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 449 0 19 44900 468 + DUhbSsUVtOYtXSwZV9cO+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 209 0 20 20900 229 + DUhbSsUVtOYtXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 10 0 681 1000 691 + DUhbSsUVtOYtXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9544 2 454 954400 10000 + DUhbSsUVtOYtXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9527 0 473 952700 10000 + DUhbSsUVtOYtXSwZV9fD+cO+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 314 0 26 31400 340 + DUhbSsUVtOYtXSwZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 27 0 6 2700 33 + DUhbSsUVtOYtXSwfD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 137 0 15 13700 152 + DUhbSsUVtOYtXSwfD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 68 0 11 6800 79 + DUhbSsUVtOYtZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 451 0 19 45100 470 + DUhbSsUVtOYtZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 4553 2 261 455300 4816 + DUhbSsUVtOYtZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 58 0 10 5800 68 + DUhbSsUVtPEuXMuXSwZV9Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 255 0 9745 25500 10000 + DUhbSsUVtPEuXMuXSwZV9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 15 0 903 1500 918 + DUhbSsUVtPEuXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 231 2 9767 23100 10000 + DUhbSsUVtPEuXMuXSwZV9fD+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 26 0 1730 2600 1756 + DUhbSsUVtPEuXMuXSwcO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1 0 233 100 234 + DUhbSsUVtPEuXMuZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 2 0 287 200 289 + DUhbSsUVtPEuXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 8 0 3 800 11 + DUhbSsUVtPEuXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 296 0 19 29600 315 + DUhbSsUVtPEuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 75 0 7 7500 82 + DUhbSsUVtPEuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 2 0 287 200 289 + DUhbSsUVtPEuXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9110 0 890 911000 10000 + DUhbSsUVtPEuZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 25 0 4 2500 29 + DUhbSsUVtXMuXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 71 0 6 7100 77 + DUhbSsUVtXMuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 73 0 6 7300 79 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 12 0 770 1200 782 + DUhbSsUVtXMuXSwZV9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 152 0 6114 15200 6266 + DUhbSsUVtXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 292 0 9708 29200 10000 + DUhbSsUVtXMuXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9491 1 508 949100 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 10 0 681 1000 691 + DUhbSsUVtXMuXSwZV9fD+cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 79 0 3418 7900 3497 + DUhbSsUVtXMuXSwZV9fD+cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 23 0 1238 2300 1261 + DUhbSsUVtXMuXSwcO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 27 0 1401 2700 1428 + DUhbSsUVtXMuXSwfD+cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1 0 228 100 229 + DUhbSsUVtXMuZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 31 0 4 3100 35 + DUhbSsUVtXMuZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 0 0 160 0 160 + DUhbSsUVtXMuZV9fD+cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 0 0 166 0 166 + DUhbSsUVtXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 27 0 6 2700 33 + DUhbSsUVtXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 404 0 13 40400 417 + DUhbSsUVtXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9776 1 223 977600 10000 + DUhbSsUVtXSwZV9cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 194 0 11 19400 205 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 7 0 547 700 554 + DUhbSsUVtXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 511 0 21 51100 532 + DUhbSsUVtXSwZV9fD+cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 364 0 32 36400 396 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 4 0 398 400 402 + DUhbSsUVtXSwcO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 16 0 5 1600 21 + DUhbSsUVtXSwfD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 8 0 4 800 12 + DUhbSsUVtZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 930 0 34 93000 964 + DUhbSsUVtZV9cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 67 0 8 6700 75 + DUhbSsUVtZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 224 0 14 22400 238 + DUhbSsXMuXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 8 0 3 800 11 + DUhbSsXMuXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 48 0 5 4800 53 + DUhbSsXMuXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 27 0 4 2700 31 + DUhbSsXMuXSwZV9cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6 0 495 600 501 + DUhbSsXMuXSwZV9fD+cO+Gf+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 8 0 589 800 597 + DUhbSsXMuZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 83 0 6 8300 89 + DUhbSsXSwGf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 79 0 5 7900 84 + DUhbSsXSwZV9: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 1091 0 28 109100 1119 + DUhbSsXSwZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9854 0 146 985400 10000 + DUhbSsXSwZV9cO+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 265 0 10 26500 275 + DUhbSsXSwZV9cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 94 0 7 9400 101 + DUhbSsXSwZV9fD+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 386 0 13 38600 399 + DUhbSsXSwZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 172 0 8 17200 180 + DUhbSsXSwcO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 18 0 6 1800 24 + DUhbSsXSwfD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 20 0 3 2000 23 + DUhbSsZV9Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 31 0 5 3100 36 + DUhbSsZV9cO+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 57 0 5 5700 62 + DUhbSsZV9fD+Gf+: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 67 0 5 6700 72 + aOhUVtZJvXSwME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 238 200 240 + aOhUVtZJvXSwPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1 0 190 100 191 + aOhUVtZJvXSwPN9dW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 12 0 1193 1200 1205 + aOhUVtZJvXSwPN9dW9cO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 448 200 450 + aOhUVtZJvXSwcO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 3 0 284 300 287 + aOhUVtZJvXSwdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 8 0 480 800 488 + aOhUVtZJvZJvME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6 0 395 600 401 + aOhUVtZJvZJvPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 233 200 235 + aOhUVtZJvZJvXSwME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 13 0 652 1300 665 + aOhUVtZJvZJvXSwME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 363 0 9637 36300 10000 + aOhUVtZJvZJvXSwMN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 13 0 653 1300 666 + aOhUVtZJvZJvXSwPN9ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 240 0 9760 24000 10000 + aOhUVtZJvZJvXSwPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 242 0 9758 24200 10000 + aOhUVtZJvZJvXSwPN9MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 11 0 585 1100 596 + aOhUVtZJvZJvXSwPN9cO+ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 61 0 3315 6100 3376 + aOhUVtZJvZJvXSwPN9cO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 54 0 2991 5400 3045 + aOhUVtZJvZJvXSwPN9dW9: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 110 5 80 11000 195 + aOhUVtZJvZJvXSwPN9dW9ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 161 2 113 16100 276 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 52 0 2895 5200 2947 + aOhUVtZJvZJvXSwPN9dW9ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 53 1 41 5300 95 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 191 0 9809 19100 10000 + aOhUVtZJvZJvXSwPN9dW9MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 114 2 86 11400 202 + aOhUVtZJvZJvXSwPN9dW9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 57 1 47 5700 105 + aOhUVtZJvZJvXSwPN9dW9cO+ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 134 1 106 13400 241 + aOhUVtZJvZJvXSwPN9dW9cO+ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 11 0 20 1100 31 + aOhUVtZJvZJvXSwPN9dW9cO+MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 3 0 525 300 528 + aOhUVtZJvZJvXSwcO+ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 19 0 1008 1900 1027 + aOhUVtZJvZJvXSwcO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 16 0 757 1600 773 + aOhUVtZJvZJvXSwcO+MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 15 0 724 1500 739 + aOhUVtZJvZJvXSwdW9ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 18 0 826 1800 844 + aOhUVtZJvZJvXSwdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 4 0 598 400 602 + aOhUVtZJvZJvXSwdW9MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 0 0 128 0 128 + aOhUVtZJvZJvXSwdW9cO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 188 0 9812 18800 10000 + aOhUVtZJvZJvcO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 0 0 129 0 129 + aOhUVtZJvZJvdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 234 200 236 + aOhZJvZJvXSwME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 25 0 1057 2500 1082 + aOhZJvZJvXSwPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 0 0 129 0 129 + aOhZJvZJvXSwPN9dW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 442 200 444 + aOhZJvZJvXSwPN9dW9cO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 12 0 1114 1200 1126 + aOhZJvZJvXSwcO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6 0 357 600 363 + aOhZJvZJvXSwdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 3 0 278 300 281 + aOhdOsUVtZJvXSwME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 250 0 9750 25000 10000 + aOhdOsUVtZJvXSwPN9ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 19 0 1417 1900 1436 + aOhdOsUVtZJvXSwPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 53 0 3204 5300 3257 + aOhdOsUVtZJvXSwPN9cO+ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 31 0 2061 3100 2092 + aOhdOsUVtZJvXSwPN9dW9: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 480 3 295 48000 778 + aOhdOsUVtZJvXSwPN9dW9ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 7220 50 3887 722000 11157 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 14 0 1138 1400 1152 + aOhdOsUVtZJvXSwPN9dW9ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6622 58 3320 662200 10000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 7 0 838 700 845 + aOhdOsUVtZJvXSwPN9dW9MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6811 51 3669 681100 10531 + aOhdOsUVtZJvXSwPN9dW9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 9844 71 5425 984400 15340 + aOhdOsUVtZJvXSwPN9dW9cO+ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6968 71 3846 696800 10885 + aOhdOsUVtZJvXSwPN9dW9cO+ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1464 10 798 146400 2272 + aOhdOsUVtZJvXSwPN9dW9cO+MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6400 75 3525 640000 10000 + aOhdOsUVtZJvXSwcO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 9 0 659 900 668 + aOhdOsUVtZJvXSwdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 19 0 1106 1900 1125 + aOhdOsUVtZJvZJvME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 4 0 316 400 320 + aOhdOsUVtZJvZJvPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 22 0 1333 2200 1355 + aOhdOsUVtZJvZJvPN9cO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 4 0 438 400 442 + aOhdOsUVtZJvZJvPN9dW9ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 23 0 26 2300 49 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 8 0 849 800 857 + aOhdOsUVtZJvZJvPN9dW9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6 0 17 600 23 + aOhdOsUVtZJvZJvPN9dW9cO+ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 26 0 28 2600 54 + aOhdOsUVtZJvZJvPN9dW9cO+ME/MN/: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 3699 0 3 369900 3702 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 9 0 16 900 25 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5 0 1016 500 1021 + aOhdOsUVtZJvZJvPN9dW9cO+MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 6 1 12 600 19 + aOhdOsUVtZJvZJvXSwME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 311 0 9689 31100 10000 + aOhdOsUVtZJvZJvXSwME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 284 0 9716 28400 10000 + aOhdOsUVtZJvZJvXSwMN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 25 0 1055 2500 1080 + aOhdOsUVtZJvZJvXSwPN9: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 138 0 7386 13800 7524 + aOhdOsUVtZJvZJvXSwPN9ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 42 1 36 4200 79 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 223 0 9777 22300 10000 + aOhdOsUVtZJvZJvXSwPN9ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 101 1 72 10100 174 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 263 0 9737 26300 10000 + aOhdOsUVtZJvZJvXSwPN9MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 64 0 53 6400 117 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 194 0 9806 19400 10000 + aOhdOsUVtZJvZJvXSwPN9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 8 1 14 800 23 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 13 0 1068 1300 1081 + aOhdOsUVtZJvZJvXSwPN9cO+ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 180 1 134 18000 315 + aOhdOsUVtZJvZJvXSwPN9cO+ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 107 2 85 10700 194 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 147 0 9853 14700 10000 + aOhdOsUVtZJvZJvXSwPN9dW9: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 65766 476 33758 6576600 100000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 0 0 211 0 211 + aOhdOsUVtZJvZJvXSwPN9dW9ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 19917 124 10084 1991700 30125 + aOhdOsUVtZJvZJvXSwPN9dW9ME/MN/: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 10000 0 0 1000000 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 66752 460 32788 6675200 100000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 175 0 9825 17500 10000 + aOhdOsUVtZJvZJvXSwPN9dW9MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 66721 494 32785 6672100 100000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 166 0 9834 16600 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 65085 563 34352 6508500 100000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9999 0 1 999900 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 63838 501 35661 6383800 100000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 122 0 9878 12200 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: + DUhbSsUVtOYtPEuXMuXSwZV9fD+cO+Gf+: 9999 0 1 999900 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 63281 580 36139 6328100 100000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 129 0 9871 12900 10000 + aOhdOsUVtZJvZJvXSwPN9dW9cO+MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 64283 615 35102 6428300 100000 + aOhdOsUVtZJvZJvXSwcO+MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 7 0 558 700 565 + aOhdOsUVtZJvZJvXSwdW9: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 261 1 171 26100 433 + aOhdOsUVtZJvZJvXSwdW9ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 2141 14 1200 214100 3355 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 211 0 9789 21100 10000 + aOhdOsUVtZJvZJvXSwdW9ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 3521 26 1851 352100 5398 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 205 0 9795 20500 10000 + aOhdOsUVtZJvZJvXSwdW9MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 1174 11 678 117400 1863 + aOhdOsUVtZJvZJvXSwdW9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 48 1 51 4800 100 + aOhdOsUVtZJvZJvXSwdW9cO+ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 142 0 106 14200 248 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 52 0 3425 5200 3477 + aOhdOsUVtZJvZJvXSwdW9cO+ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 506 4 296 50600 806 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 20 0 1593 2000 1613 + aOhdOsUVtZJvZJvXSwdW9cO+MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 600 2 375 60000 977 + aOhdOsUVtZJvZJvdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 409 200 411 + aOhdOsUVtZJvZJvdW9cO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 19 0 1533 1900 1552 + aOhdOsZJvZJvXSwME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 0 0 172 0 172 + aOhdOsZJvZJvXSwPN9ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5 0 587 500 592 + aOhdOsZJvZJvXSwPN9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 28 0 1907 2800 1935 + aOhdOsZJvZJvXSwPN9cO+ME/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 377 200 379 + aOhdOsZJvZJvXSwPN9dW9: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 23 0 28 2300 51 + aOhdOsZJvZJvXSwPN9dW9ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 8 0 14 800 22 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 4 0 518 400 522 + aOhdOsZJvZJvXSwPN9dW9ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 599 2 348 59900 949 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1 0 350 100 351 + aOhdOsZJvZJvXSwPN9dW9MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 18 0 20 1800 38 + aOhdOsZJvZJvXSwPN9dW9cO+: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 8 0 16 800 24 + aOhdOsZJvZJvXSwPN9dW9cO+ME/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 45 0 41 4500 86 + aOhdOsZJvZJvXSwPN9dW9cO+ME/MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 233 1 151 23300 385 + aOhdOsZJvZJvXSwPN9dW9cO+MN/: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 566565 12499 420936 56656500 1000000 + aOhdOsZJvZJvXSwcO+ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 0 0 166 0 166 + aOhdOsZJvZJvXSwdW9ME/MN/: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2 0 298 200 300 + aV4DMJhPBNhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6448 356 3196 644800 10000 + aV4DMJhPBNhbKNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 3251 172 1708 325100 5131 + aV4DMJhPBNhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 984 61 539 98400 1584 + aV4DMJhdNMhPBNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 7 0 14 700 21 + aV4DMJhdNMhPBNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 19 0 26 1900 45 + aV4DMJhdNMhPBNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 7 0 15 700 22 + aV4DMJhdNMhPBNhRSNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5 0 14 500 19 + aV4DMJhdNMhPBNhbKNhNLOhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 970 73 520 97000 1563 + aV4DMJhdNMhPBNhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6494 332 3174 649400 10000 + aV4DMJhdNMhPBNhbKNhNLOhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 37 6 33 3700 76 + aV4DMJhdNMhPBNhbKNhNLOhdGPhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 291 22 175 29100 488 + aV4DMJhdNMhPBNhbKNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1191 61 660 119100 1912 + aV4DMJhdNMhPBNhbKNhNLOhdGPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 50 3 47 5000 100 + aV4DMJhdNMhPBNhbKNhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6 2 12 600 20 + aV4DMJhdNMhPBNhbKNhRSNhNLOhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 649 28 384 64900 1061 + aV4DMJhdNMhPBNhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6269 232 3499 626900 10000 + aV4DMJhdNMhPBNhbKNhRSNhNLOhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 40 2 37 4000 79 + aV4DMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 557 32 359 55700 948 + aV4DMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5939 229 3832 593900 10000 + aV4DMJhdNMhPBNhbKNhRSNhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 24 3 24 2400 51 + aV4DMJhdNMhPBNhbKNhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 42 4 35 4200 81 + aV4DMJhdNMhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5532 329 2818 553200 8679 + aV4DMJhdNMhbKNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 452 35 262 45200 749 + aV4DMJhdNMhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6274 327 3399 627400 10000 + aV4DMJhdNMhbKNhRSNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 100 4 77 10000 181 + aV4JUvDMJhPBNhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 89 6 69 8900 164 + aV4JUvDMJhbKNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 908 41 545 90800 1494 + aV4JUvDMJhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5084 247 2813 508400 8144 + aV4JUvDMJhdNMhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 12 0 20 1200 32 + aV4JUvDMJhdNMhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 7 0 20 700 27 + aV4JUvDMJhdNMhPBNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6 0 20 600 26 + aV4JUvDMJhdNMhPBNhRSNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5 0 15 500 20 + aV4JUvDMJhdNMhPBNhbKNhNLOhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1720 85 989 172000 2794 + aV4JUvDMJhdNMhPBNhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 149 5 106 14900 260 + aV4JUvDMJhdNMhPBNhbKNhNLOhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 32 3 33 3200 68 + aV4JUvDMJhdNMhPBNhbKNhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 15 1 16 1500 32 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1586 76 961 158600 2623 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: + aOhdOsUVtZJvZJvXSwPN9dW9cO+ME/MN/: 10000 0 0 1000000 10000 + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5847 177 3976 584700 10000 + aV4JUvDMJhdNMhPBNhbKNhRSNhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6 1 12 600 19 + aV4JUvDMJhdNMhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 5 0 14 500 19 + aV4JUvDMJhdNMhbKNhNLOhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 897 66 514 89700 1477 + aV4JUvDMJhdNMhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6370 286 3344 637000 10000 + aV4JUvDMJhdNMhbKNhNLOhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 46 5 41 4600 92 + aV4JUvDMJhdNMhbKNhNLOhdGPhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1338 82 762 133800 2182 + aV4JUvDMJhdNMhbKNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2720 139 1531 272000 4390 + aV4JUvDMJhdNMhbKNhNLOhdGPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 60 0 57 6000 117 + aV4JUvDMJhdNMhbKNhRSNhNLOhPHPh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 1148 63 669 114800 1880 + aV4JUvDMJhdNMhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6308 252 3440 630800 10000 + aV4JUvDMJhdNMhbKNhRSNhNLOhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 9 2 10 900 21 + aV4JUvDMJhdNMhbKNhRSNhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 4 0 13 400 17 + aV4JUvDMJhdNMhbKNhRSNhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 6 4 9 600 19 + aV4JUvdNMhPBNhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 227 15 144 22700 386 + aV4JUvdNMhPBNhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 297 14 201 29700 512 + aV4JUvdNMhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 2706 151 1552 270600 4409 + aV4JUvdNMhbKNhRSNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 235 14 160 23500 409 + aV4dNMhPBNhbKNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 75 4 61 7500 140 + aV4dNMhPBNhbKNhNLOhdGPhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 204 15 129 20400 348 + aV4dNMhPBNhbKNhRSNhNLOhPHPhZAQh: + aV4JUvDMJhdNMhPBNhbKNhRSNhNLOhdGPhPHPhZAQh: 228 9 152 22800 389 diff --git a/sim.cpp b/sim.cpp index 00c95252..4f8750cc 100644 --- a/sim.cpp +++ b/sim.cpp @@ -13,6 +13,16 @@ #include "cards.h" #include "deck.h" +template +void perform_bge_devour(Field* fd, CardStatus* att_status, CardStatus* def_status, unsigned att_dmg); +template +void perform_bge_heroism(Field* fd, CardStatus* att_status, CardStatus* def_status, unsigned att_dmg); +void perform_poison(Field* fd, CardStatus* att_status, CardStatus* def_status); +void perform_corrosive(Field* fd, CardStatus* att_status, CardStatus* def_status); +void perform_mark(Field* fd, CardStatus* att_status, CardStatus* def_status); +void perform_berserk(Field* fd, CardStatus* att_status, CardStatus* def_status); +template +void perform_counter(Field* fd, CardStatus* att_status, CardStatus* def_status); void perform_drain(Field* fd, CardStatus* att_status, CardStatus* def_status, unsigned att_dmg); void perform_hunt(Field* fd, CardStatus* att_status, CardStatus* def_status); void perform_subdue(Field* fd, CardStatus* att_status, CardStatus* def_status); @@ -1430,18 +1440,27 @@ void turn_end_phase(Field* fd) } if (status.m_poisoned > 0) { - unsigned poison_dmg = remove_absorption(fd,&status,status.m_poisoned + status.m_enfeebled); - poison_dmg = safe_minus(poison_dmg, status.protected_value()); - if (poison_dmg > 0) + if(! __builtin_expect(fd->fixes[Fix::poison_after_attacked],true)) { + unsigned poison_dmg = remove_absorption(fd,&status,status.m_poisoned + status.m_enfeebled); + poison_dmg = safe_minus(poison_dmg, status.protected_value()); + if (poison_dmg > 0) + { #ifndef NQUEST if (status.m_player == 1) { fd->inc_counter(QuestType::skill_damage, Skill::poison, 0, poison_dmg); } #endif + _DEBUG_MSG(1, "%s takes poison damage %u\n", status_description(&status).c_str(), poison_dmg); + remove_hp(fd, &status, poison_dmg); // simultaneous + } + } + else { + unsigned poison_dmg = (status.m_poisoned +1 ) /2; _DEBUG_MSG(1, "%s takes poison damage %u\n", status_description(&status).c_str(), poison_dmg); remove_hp(fd, &status, poison_dmg); // simultaneous + status.m_poisoned = status.m_poisoned - poison_dmg; } } // end of the opponent's next turn for enemy units @@ -1587,148 +1606,56 @@ struct PerformAttack modify_attack_damage(pre_modifier_dmg); - if (!att_dmg) { on_attacked();return 0; } - - // Deal the attack damage - attack_damage(); - - if (__builtin_expect(fd->end, false)) { return att_dmg; } - damage_dependant_pre_oa(); + if(att_dmg) { + // Deal the attack damage + attack_damage(); + // Game Over -> return + if (__builtin_expect(fd->end, false)) { return att_dmg; } + damage_dependant_pre_oa(); + } + // on attacked does also trigger if the attack damage is blocked to zero on_attacked(); - if (!is_alive(att_status)) { return att_dmg; } - - // Enemy Skill: Counter - if (def_status->has_skill(Skill::counter)) + // only if alive attacker + if (is_alive(att_status) && (__builtin_expect(fd->fixes[Fix::counter_without_damage],true) || att_dmg) ) { - // perform_skill_counter - unsigned counter_dmg(counter_damage(fd, att_status, def_status)); -#ifndef NQUEST - if (def_status->m_player == 0) - { - fd->inc_counter(QuestType::skill_use, Skill::counter); - fd->inc_counter(QuestType::skill_damage, Skill::counter, 0, counter_dmg); - } -#endif - _DEBUG_MSG(1, "%s takes %u counter damage from %s\n", - status_description(att_status).c_str(), counter_dmg, - status_description(def_status).c_str()); - remove_hp(fd, att_status, counter_dmg); - prepend_on_death(fd); - resolve_skill(fd); - - // Passive BGE: Counterflux - if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::counterflux], false) - && (def_cardtype == CardType::assault) && is_alive(def_status)) - { - unsigned flux_denominator = (fd->bg_effects[fd->tapi][PassiveBGE::counterflux] > 0) - ? (unsigned)fd->bg_effects[fd->tapi][PassiveBGE::counterflux] - : 4; - unsigned flux_value = (def_status->skill(Skill::counter) - 1) / flux_denominator + 1; - _DEBUG_MSG(1, "Counterflux: %s heals itself and berserks for %u\n", - status_description(def_status).c_str(), flux_value); - def_status->add_hp(flux_value); - if (! def_status->m_sundered) - { def_status->m_perm_attack_buff += flux_value; } - } - - // is attacker dead? - if (!is_alive(att_status)) { return att_dmg; } + perform_counter(fd, att_status, def_status); } - - // Skill: Corrosive - unsigned corrosive_value = def_status->skill(Skill::corrosive); - if (corrosive_value > att_status->m_corroded_rate) + if (is_alive(att_status) && att_dmg) { - // perform_skill_corrosive - _DEBUG_MSG(1, "%s corrodes %s by %u\n", - status_description(def_status).c_str(), - status_description(att_status).c_str(), corrosive_value); - att_status->m_corroded_rate = corrosive_value; + perform_corrosive(fd, att_status, def_status); + } + if (is_alive(att_status) && att_dmg) + { + // Bug fix? 2023-04-03 leech after counter but before drain/berserk + // Skill: Leech + do_leech(); } - - // Bug fix? 2023-04-03 leech after counter but before drain/berserk - // Skill: Leech - do_leech(); // Bug fix? 2023-04-03 drain now part of the PerformAttack.op() instead of attack_phase, like hunt. // perform swipe/drain perform_drain(fd, att_status, def_status, att_dmg); - // Skill: Berserk - unsigned berserk_value = att_status->skill(Skill::berserk); - if (!att_status->m_sundered && (berserk_value > 0)) - { - // perform_skill_berserk - att_status->m_perm_attack_buff += berserk_value; -#ifndef NQUEST - if (att_status->m_player == 0) - { - fd->inc_counter(QuestType::skill_use, Skill::berserk); - } -#endif - - // Passive BGE: EnduringRage - if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::enduringrage], false)) - { - unsigned bge_denominator = (fd->bg_effects[fd->tapi][PassiveBGE::enduringrage] > 0) - ? (unsigned)fd->bg_effects[fd->tapi][PassiveBGE::enduringrage] - : 2; - unsigned bge_value = (berserk_value - 1) / bge_denominator + 1; - _DEBUG_MSG(1, "EnduringRage: %s heals and protects itself for %u\n", - status_description(att_status).c_str(), bge_value); - att_status->add_hp(bge_value); - att_status->m_protected += bge_value; - } + if (is_alive(att_status) && att_dmg) { + perform_berserk(fd, att_status, def_status); } - - // Bug fix? 2023-04-03 mark should come after berserk - // Increase Mark-counter - unsigned mark_base = att_status->skill(Skill::mark); - if(mark_base && skill_check(fd,att_status,def_status)) { - _DEBUG_MSG(1, "%s marks %s for %u\n", - status_description(att_status).c_str(), status_description(def_status).c_str(), mark_base); - def_status->m_marked += mark_base; + if (is_alive(att_status) ) { + perform_poison(fd, att_status, def_status); } + if (is_alive(att_status) && att_dmg) { + perform_mark(fd, att_status, def_status); - // Passive BGE: Heroism - unsigned valor_value; - if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::heroism], false) - && ((valor_value = att_status->skill(Skill::valor) + att_status->skill(Skill::bravery)) > 0) - && !att_status->m_sundered - && (def_cardtype == CardType::assault) && (def_status->m_hp <= 0)) - { - _DEBUG_MSG(1, "Heroism: %s gain %u attack\n", - status_description(att_status).c_str(), valor_value); - att_status->m_perm_attack_buff += valor_value; - } + perform_bge_heroism(fd, att_status, def_status); + perform_bge_devour(fd, att_status, def_status); - // Passive BGE: Devour - unsigned leech_value; - if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::devour], false) - && ((leech_value = att_status->skill(Skill::leech) + att_status->skill(Skill::refresh)) > 0) - && (def_cardtype == CardType::assault)) - { - unsigned bge_denominator = (fd->bg_effects[fd->tapi][PassiveBGE::devour] > 0) - ? (unsigned)fd->bg_effects[fd->tapi][PassiveBGE::devour] - : 4; - unsigned bge_value = (leech_value - 1) / bge_denominator + 1; - if (! att_status->m_sundered) - { - _DEBUG_MSG(1, "Devour: %s gains %u attack\n", - status_description(att_status).c_str(), bge_value); - att_status->m_perm_attack_buff += bge_value; + if ( __builtin_expect(!fd->fixes[Fix::subdue_before_attack],false)) { + perform_subdue(fd, att_status, def_status); } - _DEBUG_MSG(1, "Devour: %s extends max hp / heals itself for %u\n", - status_description(att_status).c_str(), bge_value); - att_status->ext_hp(bge_value); - } - - if ( __builtin_expect(!fd->fixes[Fix::subdue_before_attack],false)) { - perform_subdue(fd, att_status, def_status); } + // perform hunt + perform_hunt(fd, att_status, def_status); return att_dmg; } @@ -1959,7 +1886,10 @@ void PerformAttack::attack_damage() template<> void PerformAttack::damage_dependant_pre_oa() { + if (!__builtin_expect(fd->fixes[Fix::poison_after_attacked],true)) + { unsigned poison_value = std::max(att_status->skill(Skill::poison), att_status->skill(Skill::venom)); + if (poison_value > def_status->m_poisoned && skill_check(fd, att_status, def_status)) { // perform_skill_poison @@ -1974,39 +1904,23 @@ void PerformAttack::damage_dependant_pre_oa() status_description(def_status).c_str(), poison_value); def_status->m_poisoned = poison_value; } - - // Damage-Dependent skill: Inhibit - /* - unsigned inhibit_value = att_status->skill(Skill::inhibit); - if (inhibit_value > def_status->m_inhibited && skill_check(fd, att_status, def_status)) - { - _DEBUG_MSG(1, "%s inhibits %s by %u\n", - status_description(att_status).c_str(), - status_description(def_status).c_str(), inhibit_value); - def_status->m_inhibited = inhibit_value; } - */ - - // Damage-Dependent skill: Sabotage - /* - unsigned sabotage_value = att_status->skill(Skill::sabotage); - if (sabotage_value > def_status->m_sabotaged && skill_check(fd, att_status, def_status)) - { - _DEBUG_MSG(1, "%s sabotages %s by %u\n", + else { + if (skill_check(fd, att_status, def_status)) { +#ifndef NQUEST + if (att_status->m_player == 0) + { + fd->inc_counter(QuestType::skill_use, Skill::venom); + } +#endif + unsigned venom_value = att_status->skill(Skill::venom); + _DEBUG_MSG(1, "%s venoms %s by %u\n", status_description(att_status).c_str(), - status_description(def_status).c_str(), sabotage_value); - def_status->m_sabotaged = sabotage_value; - } - */ - // Damage-Dependent skill: Increase Disease-counter - /* - unsigned disease_base = att_status->skill(Skill::disease); - if(disease_base && skill_check(fd, att_status, def_status)) { - _DEBUG_MSG(1, "%s diseases %s for %u\n", - status_description(att_status).c_str(), status_description(def_status).c_str(), disease_base); - def_status->m_diseased += disease_base; + status_description(def_status).c_str(), venom_value); + // new venom keeps adding stacks + def_status->m_poisoned += venom_value; + } } - */ } template<> @@ -2062,8 +1976,6 @@ bool attack_phase(Field* fd) CardStatus* def_status = &def_assaults[fd->current_ci]; att_dmg = PerformAttack{fd, att_status, def_status}.op(); - // perform hunt - perform_hunt(fd, att_status, def_status); } else { @@ -2670,6 +2582,177 @@ inline bool check_and_perform_skill(Field* fd, CardStatus* src, CardStatus* dst, status_description(dst).c_str()); return(false); } +template +void perform_bge_devour(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ +// Passive BGE: Devour + unsigned leech_value; + if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::devour], false) + && ((leech_value = att_status->skill(Skill::leech) + att_status->skill(Skill::refresh)) > 0) + && (def_cardtype == CardType::assault)) + { + unsigned bge_denominator = (fd->bg_effects[fd->tapi][PassiveBGE::devour] > 0) + ? (unsigned)fd->bg_effects[fd->tapi][PassiveBGE::devour] + : 4; + unsigned bge_value = (leech_value - 1) / bge_denominator + 1; + if (! att_status->m_sundered) + { + _DEBUG_MSG(1, "Devour: %s gains %u attack\n", + status_description(att_status).c_str(), bge_value); + att_status->m_perm_attack_buff += bge_value; + } + _DEBUG_MSG(1, "Devour: %s extends max hp / heals itself for %u\n", + status_description(att_status).c_str(), bge_value); + att_status->ext_hp(bge_value); + } +} +template +void perform_bge_heroism(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ +// Passive BGE: Heroism + unsigned valor_value; + if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::heroism], false) + && ((valor_value = att_status->skill(Skill::valor) + att_status->skill(Skill::bravery)) > 0) + && !att_status->m_sundered + && (def_cardtype == CardType::assault) && (def_status->m_hp <= 0)) + { + _DEBUG_MSG(1, "Heroism: %s gain %u attack\n", + status_description(att_status).c_str(), valor_value); + att_status->m_perm_attack_buff += valor_value; + } + } +/** + * @brief Perform Mark skill, increases Mark-counter. + * + * @param fd Field + * @param att_status Attacker + * @param def_status Defender + */ +void perform_mark(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ + // Bug fix? 2023-04-03 mark should come after berserk + // Increase Mark-counter + unsigned mark_base = att_status->skill(Skill::mark); + if(mark_base && skill_check(fd,att_status,def_status)) { + _DEBUG_MSG(1, "%s marks %s for %u\n", + status_description(att_status).c_str(), status_description(def_status).c_str(), mark_base); + def_status->m_marked += mark_base; + } +} +/** + * @brief Perform Berserk skill and Passive BGE: EnduringRage + * + * Increases attack by berserk value if not sundered. + * + * @param fd Field + * @param att_status Attacker + * @param def_status Defender + */ +void perform_berserk(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ + // Skill: Berserk + unsigned berserk_value = att_status->skill(Skill::berserk); + if ( !att_status->m_sundered && (berserk_value > 0)) + { + // perform_skill_berserk + att_status->m_perm_attack_buff += berserk_value; +#ifndef NQUEST + if (att_status->m_player == 0) + { + fd->inc_counter(QuestType::skill_use, Skill::berserk); + } +#endif + + // Passive BGE: EnduringRage + if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::enduringrage], false)) + { + unsigned bge_denominator = (fd->bg_effects[fd->tapi][PassiveBGE::enduringrage] > 0) + ? (unsigned)fd->bg_effects[fd->tapi][PassiveBGE::enduringrage] + : 2; + unsigned bge_value = (berserk_value - 1) / bge_denominator + 1; + _DEBUG_MSG(1, "EnduringRage: %s heals and protects itself for %u\n", + status_description(att_status).c_str(), bge_value); + att_status->add_hp(bge_value); + att_status->m_protected += bge_value; + } + } + + +} +/** + * @brief Poisoning of a attacking card + * + * @param fd Field + * @param att_status Attacking card + * @param def_status Defending card + */ +void perform_poison(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ + if(__builtin_expect(fd->fixes[Fix::poison_after_attacked],true)) + { + if (is_alive(att_status) && def_status->has_skill(Skill::poison)) + { + unsigned poison_value = def_status->skill(Skill::poison); + _DEBUG_MSG(1, "%s gets poisoned by %u from %s\n", + status_description(att_status).c_str(), poison_value, + status_description(def_status).c_str()); + att_status->m_poisoned += poison_value; + } + } +} + +void perform_corrosive(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ + // Skill: Corrosive + unsigned corrosive_value = def_status->skill(Skill::corrosive); + if (corrosive_value > att_status->m_corroded_rate) + { + // perform_skill_corrosive + _DEBUG_MSG(1, "%s corrodes %s by %u\n", + status_description(def_status).c_str(), + status_description(att_status).c_str(), corrosive_value); + att_status->m_corroded_rate = corrosive_value; + } +} + +template +void perform_counter(Field* fd, CardStatus* att_status, CardStatus* def_status) +{ + // Enemy Skill: Counter + if (def_status->has_skill(Skill::counter)) + { + // perform_skill_counter + unsigned counter_dmg(counter_damage(fd, att_status, def_status)); +#ifndef NQUEST + if (def_status->m_player == 0) + { + fd->inc_counter(QuestType::skill_use, Skill::counter); + fd->inc_counter(QuestType::skill_damage, Skill::counter, 0, counter_dmg); + } +#endif + _DEBUG_MSG(1, "%s takes %u counter damage from %s\n", + status_description(att_status).c_str(), counter_dmg, + status_description(def_status).c_str()); + remove_hp(fd, att_status, counter_dmg); + prepend_on_death(fd); + resolve_skill(fd); + + // Passive BGE: Counterflux + if (__builtin_expect(fd->bg_effects[fd->tapi][PassiveBGE::counterflux], false) + && (def_cardtype == CardType::assault) && is_alive(def_status)) + { + unsigned flux_denominator = (fd->bg_effects[fd->tapi][PassiveBGE::counterflux] > 0) + ? (unsigned)fd->bg_effects[fd->tapi][PassiveBGE::counterflux] + : 4; + unsigned flux_value = (def_status->skill(Skill::counter) - 1) / flux_denominator + 1; + _DEBUG_MSG(1, "Counterflux: %s heals itself and berserks for %u\n", + status_description(def_status).c_str(), flux_value); + def_status->add_hp(flux_value); + if (! def_status->m_sundered) + { def_status->m_perm_attack_buff += flux_value; } + } + } +} bool check_and_perform_enhance(Field* fd, CardStatus* src, bool early) { if(!is_active(src))return false; // active diff --git a/tyrant_optimize.cpp b/tyrant_optimize.cpp index 67279e30..fac7fa97 100644 --- a/tyrant_optimize.cpp +++ b/tyrant_optimize.cpp @@ -469,10 +469,10 @@ void init() fixes[Fix::dont_evade_mimic_selection] = true; fixes[Fix::leech_increase_max_hp] = true; fixes[Fix::subdue_before_attack] = true; + fixes[Fix::counter_without_damage] = true; + fixes[Fix::poison_after_attacked] = true; - fixes[Fix::counter_without_damage] = false; fixes[Fix::corrosive_protect_armor] = false; - fixes[Fix::poison_after_attacked] = false; db_limit = -1;