maidraw 0.5.5 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/assets/themes/maimai/salt/2026landscape/image/achievement/a.png +0 -0
  2. package/assets/themes/maimai/salt/2026landscape/image/achievement/aa.png +0 -0
  3. package/assets/themes/maimai/salt/2026landscape/image/achievement/aaa.png +0 -0
  4. package/assets/themes/maimai/salt/2026landscape/image/achievement/b.png +0 -0
  5. package/assets/themes/maimai/salt/2026landscape/image/achievement/bb.png +0 -0
  6. package/assets/themes/maimai/salt/2026landscape/image/achievement/bbb.png +0 -0
  7. package/assets/themes/maimai/salt/2026landscape/image/achievement/c.png +0 -0
  8. package/assets/themes/maimai/salt/2026landscape/image/achievement/d.png +0 -0
  9. package/assets/themes/maimai/salt/2026landscape/image/achievement/s.png +0 -0
  10. package/assets/themes/maimai/salt/2026landscape/image/achievement/sp.png +0 -0
  11. package/assets/themes/maimai/salt/2026landscape/image/achievement/ss.png +0 -0
  12. package/assets/themes/maimai/salt/2026landscape/image/achievement/ssp.png +0 -0
  13. package/assets/themes/maimai/salt/2026landscape/image/achievement/sss.png +0 -0
  14. package/assets/themes/maimai/salt/2026landscape/image/achievement/sssp.png +0 -0
  15. package/assets/themes/maimai/salt/2026landscape/image/background.png +0 -0
  16. package/assets/themes/maimai/salt/2026landscape/image/chara.png +0 -0
  17. package/assets/themes/maimai/salt/2026landscape/image/logo.png +0 -0
  18. package/assets/themes/maimai/salt/2026landscape/manifest.json +172 -0
  19. package/assets/themes/ongeki/common/refresh/achievement/a.png +0 -0
  20. package/assets/themes/ongeki/common/refresh/achievement/aa.png +0 -0
  21. package/assets/themes/ongeki/common/refresh/achievement/aaa.png +0 -0
  22. package/assets/themes/ongeki/common/refresh/achievement/b.png +0 -0
  23. package/assets/themes/ongeki/common/refresh/achievement/bb.png +0 -0
  24. package/assets/themes/ongeki/common/refresh/achievement/bbb.png +0 -0
  25. package/assets/themes/ongeki/common/refresh/achievement/c.png +0 -0
  26. package/assets/themes/ongeki/common/refresh/achievement/d.png +0 -0
  27. package/assets/themes/ongeki/common/refresh/achievement/s.png +0 -0
  28. package/assets/themes/ongeki/common/refresh/achievement/ss.png +0 -0
  29. package/assets/themes/ongeki/common/refresh/achievement/sss.png +0 -0
  30. package/assets/themes/ongeki/common/refresh/achievement/sssp.png +0 -0
  31. package/assets/themes/ongeki/common/refresh/jp/background.png +0 -0
  32. package/assets/themes/ongeki/common/refresh/jp/logo.png +0 -0
  33. package/assets/themes/ongeki/common/versionless/icon.png +0 -0
  34. package/assets/themes/ongeki/common/versionless/milestone/ab.png +0 -0
  35. package/assets/themes/ongeki/common/versionless/milestone/abp.png +0 -0
  36. package/assets/themes/ongeki/common/versionless/milestone/fb.png +0 -0
  37. package/assets/themes/ongeki/common/versionless/milestone/fc.png +0 -0
  38. package/assets/themes/ongeki/common/versionless/numberMap.png +0 -0
  39. package/assets/themes/ongeki/common/versionless/userplateAF2025.png +0 -0
  40. package/assets/themes/ongeki/common/versionless/userplateIchigeki.png +0 -0
  41. package/assets/themes/ongeki/common/versionless/void.png +0 -0
  42. package/assets/themes/ongeki/jp/refreshLandscape/refresh/manifest.json +173 -0
  43. package/dist/chu/bests/best50.d.ts +4 -2
  44. package/dist/chu/bests/best50.js +27 -2
  45. package/dist/chu/bests/best50.js.map +1 -1
  46. package/dist/chu/chart/index.d.ts +3 -3
  47. package/dist/chu/chart/index.js +28 -5
  48. package/dist/chu/chart/index.js.map +1 -1
  49. package/dist/chu/index.d.ts +6 -4
  50. package/dist/chu/index.js +29 -4
  51. package/dist/chu/index.js.map +1 -1
  52. package/dist/geki/bests/best50.d.ts +37 -0
  53. package/dist/geki/bests/best50.js +867 -0
  54. package/dist/geki/bests/best50.js.map +1 -0
  55. package/dist/geki/bests/index.d.ts +1 -0
  56. package/dist/geki/bests/index.js +6 -0
  57. package/dist/geki/bests/index.js.map +1 -0
  58. package/dist/geki/bests/lib/index.d.ts +34 -0
  59. package/dist/geki/bests/lib/index.js +60 -0
  60. package/dist/geki/bests/lib/index.js.map +1 -0
  61. package/dist/geki/bests/lib/kamaiTachi/index.d.ts +205 -0
  62. package/dist/geki/bests/lib/kamaiTachi/index.js +498 -0
  63. package/dist/geki/bests/lib/kamaiTachi/index.js.map +1 -0
  64. package/dist/geki/bests/type.d.ts +122 -0
  65. package/dist/geki/bests/type.js +3 -0
  66. package/dist/geki/bests/type.js.map +1 -0
  67. package/dist/geki/chart/database.d.ts +9 -0
  68. package/dist/geki/chart/database.js +66 -0
  69. package/dist/geki/chart/database.js.map +1 -0
  70. package/dist/geki/chart/index.d.ts +4 -0
  71. package/dist/geki/chart/index.js +32 -0
  72. package/dist/geki/chart/index.js.map +1 -0
  73. package/dist/geki/index.d.ts +10 -0
  74. package/dist/geki/index.js +70 -0
  75. package/dist/geki/index.js.map +1 -0
  76. package/dist/geki/type.d.ts +51 -0
  77. package/dist/geki/type.js +39 -0
  78. package/dist/geki/type.js.map +1 -0
  79. package/dist/index.d.ts +7 -5
  80. package/dist/index.js +32 -7
  81. package/dist/index.js.map +1 -1
  82. package/dist/mai/best50/index.d.ts +46 -6
  83. package/dist/mai/best50/index.js +127 -330
  84. package/dist/mai/best50/index.js.map +1 -1
  85. package/dist/mai/best50/lib/kamaiTachi/index.d.ts +10 -2
  86. package/dist/mai/best50/lib/kamaiTachi/index.js +34 -7
  87. package/dist/mai/best50/lib/kamaiTachi/index.js.map +1 -1
  88. package/dist/mai/chart/index.d.ts +3 -3
  89. package/dist/mai/chart/index.js +28 -5
  90. package/dist/mai/chart/index.js.map +1 -1
  91. package/dist/mai/index.d.ts +6 -4
  92. package/dist/mai/index.js +29 -4
  93. package/dist/mai/index.js.map +1 -1
  94. package/package.json +2 -2
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -12,10 +35,10 @@ const color_1 = __importDefault(require("color"));
12
35
  const sharp_1 = __importDefault(require("sharp"));
13
36
  const glob_1 = require("glob");
14
37
  const chart_1 = require("../chart");
15
- const lxns_1 = require("./lib/lxns");
16
- const kamaiTachi_1 = require("./lib/kamaiTachi");
17
- const divingFish_1 = require("./lib/divingFish");
18
38
  const string_template_1 = __importDefault(require("string-template"));
39
+ const lxns = __importStar(require("./lib/lxns"));
40
+ const kamaiTachi = __importStar(require("./lib/kamaiTachi"));
41
+ const divingFish = __importStar(require("./lib/divingFish"));
19
42
  class HalfFullWidthConvert {
20
43
  static charsets = {
21
44
  latin: { halfRE: /[!-~]/g, fullRE: /[!-~]/g, delta: 0xfee0 },
@@ -50,9 +73,44 @@ class HalfFullWidthConvert {
50
73
  static toHalfWidth = (str0) => this.sets.reduce((str, set) => str.replace(this.re(set, "full"), this.toHalf(set)), str0);
51
74
  }
52
75
  class Best50 {
53
- static LXNS = lxns_1.LXNS;
54
- static KamaiTachi = kamaiTachi_1.KamaiTachi;
55
- static DivingFish = divingFish_1.DivingFish;
76
+ static RATING_CONSTANTS = {
77
+ [type_1.EAchievementTypes.D]: {
78
+ [0.4]: 6.4,
79
+ [0.3]: 4.8,
80
+ [0.2]: 3.2,
81
+ [0.1]: 1.6,
82
+ [0]: 0,
83
+ },
84
+ [type_1.EAchievementTypes.C]: 13.6,
85
+ [type_1.EAchievementTypes.B]: 13.6,
86
+ [type_1.EAchievementTypes.BB]: 13.6,
87
+ [type_1.EAchievementTypes.BBB]: 13.6,
88
+ [type_1.EAchievementTypes.A]: 13.6,
89
+ [type_1.EAchievementTypes.AA]: 15.2,
90
+ [type_1.EAchievementTypes.AAA]: 16.8,
91
+ [type_1.EAchievementTypes.S]: 20.0,
92
+ [type_1.EAchievementTypes.SP]: 20.3,
93
+ [type_1.EAchievementTypes.SS]: 20.8,
94
+ [type_1.EAchievementTypes.SSP]: 21.1,
95
+ [type_1.EAchievementTypes.SSS]: 21.6,
96
+ [type_1.EAchievementTypes.SSSP]: 22.4,
97
+ };
98
+ static RANK_BORDERS = {
99
+ [type_1.EAchievementTypes.D]: [0.0, 0.1, 0.2, 0.3, 0.4],
100
+ [type_1.EAchievementTypes.C]: 0.5,
101
+ [type_1.EAchievementTypes.B]: 0.6,
102
+ [type_1.EAchievementTypes.BB]: 0.7,
103
+ [type_1.EAchievementTypes.BBB]: 0.75,
104
+ [type_1.EAchievementTypes.A]: 0.8,
105
+ [type_1.EAchievementTypes.AA]: 0.9,
106
+ [type_1.EAchievementTypes.AAA]: 0.94,
107
+ [type_1.EAchievementTypes.S]: 0.97,
108
+ [type_1.EAchievementTypes.SP]: 0.98,
109
+ [type_1.EAchievementTypes.SS]: 0.99,
110
+ [type_1.EAchievementTypes.SSP]: 0.995,
111
+ [type_1.EAchievementTypes.SSS]: 1.0,
112
+ [type_1.EAchievementTypes.SSSP]: 1.005,
113
+ };
56
114
  static DEFAULT_THEME = "jp-prism-landscape";
57
115
  static get assetsPath() {
58
116
  return upath_1.default.join(__dirname, "..", "..", "..", "assets");
@@ -726,10 +784,6 @@ class Best50 {
726
784
  }
727
785
  /* End Draw Tools*/
728
786
  static async draw(name, rating, newScores, oldScores, options) {
729
- await chart_1.Chart.Database.cacheJackets([
730
- ...newScores.map((v) => v.chart.id),
731
- ...oldScores.map((v) => v.chart.id),
732
- ]);
733
787
  let currentTheme = this.primaryTheme;
734
788
  if (options?.theme) {
735
789
  const theme = this.getTheme(options.theme);
@@ -738,6 +792,10 @@ class Best50 {
738
792
  }
739
793
  }
740
794
  if (currentTheme) {
795
+ await chart_1.Chart.Database.cacheJackets([
796
+ ...newScores.map((v) => v.chart.id),
797
+ ...oldScores.map((v) => v.chart.id),
798
+ ]);
741
799
  const canvas = new canvas_1.Canvas(currentTheme.manifest.width * (options?.scale ?? 1), currentTheme.manifest.height * (options?.scale ?? 1));
742
800
  const ctx = canvas.getContext("2d");
743
801
  if (options?.scale)
@@ -776,11 +834,38 @@ class Best50 {
776
834
  break;
777
835
  }
778
836
  case "text": {
779
- function getRatingBase(scores) {
837
+ const getRatingBase = (scores, length) => {
838
+ if (scores.length < length)
839
+ return 0;
780
840
  return (scores
781
- .map((v) => v.dxRating)
841
+ .slice(0, length)
842
+ .map((v) => {
843
+ let ratingConstant = 0;
844
+ if (v.achievementRank ==
845
+ type_1.EAchievementTypes.D) {
846
+ if (v.achievement > 40)
847
+ ratingConstant =
848
+ this.RATING_CONSTANTS[v.achievementRank]["0.4"];
849
+ if (v.achievement > 30)
850
+ ratingConstant =
851
+ this.RATING_CONSTANTS[v.achievementRank]["0.3"];
852
+ if (v.achievement > 20)
853
+ ratingConstant =
854
+ this.RATING_CONSTANTS[v.achievementRank]["0.2"];
855
+ if (v.achievement > 10)
856
+ ratingConstant =
857
+ this.RATING_CONSTANTS[v.achievementRank]["0.1"];
858
+ }
859
+ else {
860
+ ratingConstant =
861
+ this.RATING_CONSTANTS[v.achievementRank];
862
+ }
863
+ return ((v.achievement / 100) *
864
+ ratingConstant *
865
+ v.chart.level);
866
+ })
782
867
  .sort((a, b) => a - b)[0] || 0);
783
- }
868
+ };
784
869
  function getRatingAvg(scores, length) {
785
870
  if (scores.length <= 0)
786
871
  return 0;
@@ -788,325 +873,32 @@ class Best50 {
788
873
  .map((v) => v.dxRating)
789
874
  .reduce((sum, v) => (sum += v)) / length);
790
875
  }
791
- function getMilestone(scores) {
792
- const MILESTONES_SSSP = {
793
- "15.0": 337,
794
- "14.9": 335,
795
- "14.8": 333,
796
- "14.7": 330,
797
- "14.6": 328,
798
- "14.5": 326,
799
- "14.4": 324,
800
- "14.3": 321,
801
- "14.2": 319,
802
- "14.1": 317,
803
- "14.0": 315,
804
- "13.9": 312,
805
- "13.8": 310,
806
- "13.7": 308,
807
- "13.6": 306,
808
- "13.5": 303,
809
- "13.4": 301,
810
- "13.3": 299,
811
- "13.2": 297,
812
- "13.1": 294,
813
- "13.0": 292,
814
- "12.9": 290,
815
- "12.8": 288,
816
- "12.7": 285,
817
- "12.6": 283,
818
- "12.5": 281,
819
- "12.4": 279,
820
- "12.3": 276,
821
- "12.2": 274,
822
- "12.1": 272,
823
- "12.0": 270,
824
- "11.9": 267,
825
- "11.8": 265,
826
- "11.7": 263,
827
- "11.6": 261,
828
- "11.5": 258,
829
- "11.4": 256,
830
- "11.3": 254,
831
- "11.2": 252,
832
- "11.1": 249,
833
- "11.0": 247,
834
- "10.9": 245,
835
- "10.8": 243,
836
- "10.7": 240,
837
- "10.6": 238,
838
- "10.5": 236,
839
- "10.4": 234,
840
- "10.3": 231,
841
- "10.2": 229,
842
- "10.1": 227,
843
- "10.0": 225,
844
- "9.9": 222,
845
- "9.8": 220,
846
- "9.7": 218,
847
- "9.6": 216,
848
- "9.5": 213,
849
- "9.4": 211,
850
- "9.3": 209,
851
- "9.2": 207,
852
- "9.1": 204,
853
- "9.0": 202,
854
- "8.9": 200,
855
- "8.8": 198,
856
- "8.7": 195,
857
- "8.6": 193,
858
- "8.5": 191,
859
- "8.4": 189,
860
- "8.3": 186,
861
- "8.2": 184,
862
- "8.1": 182,
863
- "8.0": 180,
864
- "7.9": 177,
865
- "7.8": 175,
866
- "7.7": 173,
867
- "7.6": 171,
868
- "7.5": 168,
869
- "7.4": 166,
870
- "7.3": 164,
871
- "7.2": 162,
872
- "7.1": 159,
873
- "7.0": 157,
874
- "6.9": 155,
875
- "6.8": 153,
876
- "6.7": 150,
877
- "6.6": 148,
878
- "6.5": 146,
879
- "6.4": 144,
880
- "6.3": 141,
881
- "6.2": 139,
882
- "6.1": 137,
883
- "6.0": 135,
884
- "5.9": 132,
885
- "5.8": 130,
886
- "5.7": 128,
887
- "5.6": 126,
888
- "5.5": 123,
889
- "5.4": 121,
890
- "5.3": 119,
891
- "5.2": 117,
892
- "5.1": 114,
893
- "5.0": 112,
894
- "4.9": 110,
895
- "4.8": 108,
896
- "4.7": 105,
897
- "4.6": 103,
898
- "4.5": 101,
899
- "4.4": 99,
900
- "4.3": 96,
901
- "4.2": 94,
902
- "4.1": 92,
903
- "4.0": 90,
904
- "3.9": 87,
905
- "3.8": 85,
906
- "3.7": 83,
907
- "3.6": 81,
908
- "3.5": 78,
909
- "3.4": 76,
910
- "3.3": 74,
911
- "3.2": 72,
912
- "3.1": 69,
913
- "3.0": 67,
914
- "2.9": 65,
915
- "2.8": 63,
916
- "2.7": 60,
917
- "2.6": 58,
918
- "2.5": 56,
919
- "2.4": 54,
920
- "2.3": 51,
921
- "2.2": 49,
922
- "2.1": 47,
923
- "2.0": 45,
924
- "1.9": 42,
925
- "1.8": 40,
926
- "1.7": 38,
927
- "1.6": 36,
928
- "1.5": 33,
929
- "1.4": 31,
930
- "1.3": 29,
931
- "1.2": 27,
932
- "1.1": 24,
933
- "1.0": 22,
934
- };
935
- const MILESTONES_SSS = {
936
- "15.0": 324,
937
- "14.9": 321,
938
- "14.8": 319,
939
- "14.7": 317,
940
- "14.6": 315,
941
- "14.5": 313,
942
- "14.4": 311,
943
- "14.3": 308,
944
- "14.2": 306,
945
- "14.1": 304,
946
- "14.0": 302,
947
- "13.9": 300,
948
- "13.8": 298,
949
- "13.7": 295,
950
- "13.6": 293,
951
- "13.5": 291,
952
- "13.4": 289,
953
- "13.3": 287,
954
- "13.2": 285,
955
- "13.1": 282,
956
- "13.0": 280,
957
- "12.9": 278,
958
- "12.8": 276,
959
- "12.7": 274,
960
- "12.6": 272,
961
- "12.5": 270,
962
- "12.4": 267,
963
- "12.3": 265,
964
- "12.2": 263,
965
- "12.1": 261,
966
- "12.0": 259,
967
- "11.9": 257,
968
- "11.8": 254,
969
- "11.7": 252,
970
- "11.6": 250,
971
- "11.5": 248,
972
- "11.4": 246,
973
- "11.3": 244,
974
- "11.2": 241,
975
- "11.1": 239,
976
- "11.0": 237,
977
- "10.9": 235,
978
- "10.8": 233,
979
- "10.7": 231,
980
- "10.6": 228,
981
- "10.5": 226,
982
- "10.4": 224,
983
- "10.3": 222,
984
- "10.2": 220,
985
- "10.1": 218,
986
- "10.0": 216,
987
- "9.9": 213,
988
- "9.8": 211,
989
- "9.7": 209,
990
- "9.6": 207,
991
- "9.5": 205,
992
- "9.4": 203,
993
- "9.3": 200,
994
- "9.2": 198,
995
- "9.1": 196,
996
- "9.0": 194,
997
- "8.9": 192,
998
- "8.8": 190,
999
- "8.7": 187,
1000
- "8.6": 185,
1001
- "8.5": 183,
1002
- "8.4": 181,
1003
- "8.3": 179,
1004
- "8.2": 177,
1005
- "8.1": 174,
1006
- "8.0": 172,
1007
- "7.9": 170,
1008
- "7.8": 168,
1009
- "7.7": 166,
1010
- "7.6": 164,
1011
- "7.5": 162,
1012
- "7.4": 159,
1013
- "7.3": 157,
1014
- "7.2": 155,
1015
- "7.1": 153,
1016
- "7.0": 151,
1017
- "6.9": 149,
1018
- "6.8": 146,
1019
- "6.7": 144,
1020
- "6.6": 142,
1021
- "6.5": 140,
1022
- "6.4": 138,
1023
- "6.3": 136,
1024
- "6.2": 133,
1025
- "6.1": 131,
1026
- "6.0": 129,
1027
- "5.9": 127,
1028
- "5.8": 125,
1029
- "5.7": 123,
1030
- "5.6": 120,
1031
- "5.5": 118,
1032
- "5.4": 116,
1033
- "5.3": 114,
1034
- "5.2": 112,
1035
- "5.1": 110,
1036
- "5.0": 108,
1037
- "4.9": 105,
1038
- "4.8": 103,
1039
- "4.7": 101,
1040
- "4.6": 99,
1041
- "4.5": 97,
1042
- "4.4": 95,
1043
- "4.3": 92,
1044
- "4.2": 90,
1045
- "4.1": 88,
1046
- "4.0": 86,
1047
- "3.9": 84,
1048
- "3.8": 82,
1049
- "3.7": 79,
1050
- "3.6": 77,
1051
- "3.5": 75,
1052
- "3.4": 73,
1053
- "3.3": 71,
1054
- "3.2": 69,
1055
- "3.1": 66,
1056
- "3.0": 64,
1057
- "2.9": 62,
1058
- "2.8": 60,
1059
- "2.7": 58,
1060
- "2.6": 56,
1061
- "2.5": 54,
1062
- "2.4": 51,
1063
- "2.3": 49,
1064
- "2.2": 47,
1065
- "2.1": 45,
1066
- "2.0": 43,
1067
- "1.9": 41,
1068
- "1.8": 38,
1069
- "1.7": 36,
1070
- "1.6": 34,
1071
- "1.5": 32,
1072
- "1.4": 30,
1073
- "1.3": 28,
1074
- "1.2": 25,
1075
- "1.1": 23,
1076
- "1.0": 21,
1077
- };
1078
- const base = getRatingBase(scores);
876
+ const getRatingTargetLevel = (rating, target) => {
877
+ if (target == type_1.EAchievementTypes.D) {
878
+ return 0;
879
+ }
880
+ const naiveNevel = rating /
881
+ (this.RATING_CONSTANTS[target] *
882
+ this.RANK_BORDERS[target]);
883
+ return Math.ceil(naiveNevel * 10) / 10;
884
+ };
885
+ function getMilestone(scores, length) {
886
+ const base = getRatingBase(scores, length);
1079
887
  let sssTarget, ssspTarget;
1080
- for (const level in MILESTONES_SSSP) {
1081
- const rating = MILESTONES_SSSP[level];
1082
- if (base >= rating) {
1083
- if (level == "15.0") {
1084
- ssspTarget = undefined;
1085
- }
1086
- else {
1087
- ssspTarget = level;
1088
- }
1089
- break;
1090
- }
888
+ const sssLevel = getRatingTargetLevel(base, type_1.EAchievementTypes.SSS);
889
+ const ssspLevel = getRatingTargetLevel(base, type_1.EAchievementTypes.SSSP);
890
+ if (sssLevel > 0 && sssLevel < 15) {
891
+ sssTarget = sssLevel;
1091
892
  }
1092
- for (const level in MILESTONES_SSS) {
1093
- const rating = MILESTONES_SSS[level];
1094
- if (base >= rating) {
1095
- if (level == "15.0") {
1096
- sssTarget = undefined;
1097
- }
1098
- else {
1099
- sssTarget = level;
1100
- }
1101
- break;
1102
- }
893
+ if (ssspLevel > 0 && ssspLevel < 15) {
894
+ ssspTarget = ssspLevel;
1103
895
  }
1104
896
  if (sssTarget && ssspTarget)
1105
- return `Next rating boost: lv. ${(parseFloat(ssspTarget) + 0.1).toFixed(1)} SSS+/${(parseFloat(sssTarget) + 0.1).toFixed(1)} SSS`;
897
+ return `Next rating boost: lv. ${ssspTarget.toFixed(1)} SSS+/${sssTarget.toFixed(1)} SSS`;
1106
898
  else if (sssTarget)
1107
- return `Next rating boost: lv. ${(parseFloat(sssTarget) + 0.1).toFixed(1)} SSS`;
899
+ return `Next rating boost: lv. ${sssTarget.toFixed(1)} SSS`;
1108
900
  else if (ssspTarget)
1109
- return `Next rating boost: lv. ${(parseFloat(ssspTarget) + 0.1).toFixed(1)} SSS+`;
901
+ return `Next rating boost: lv. ${ssspTarget.toFixed(1)} SSS+`;
1110
902
  else
1111
903
  return "Good job!";
1112
904
  }
@@ -1115,10 +907,10 @@ class Best50 {
1115
907
  rating: rating.toFixed(0),
1116
908
  newScoreRatingAvg: getRatingAvg(newScores, 15).toFixed(0),
1117
909
  oldScoreRatingAvg: getRatingAvg(oldScores, 35).toFixed(0),
1118
- newScoreRatingBase: getRatingBase(newScores).toFixed(0),
1119
- oldScoreRatingBase: getRatingBase(oldScores).toFixed(0),
1120
- newScoreMilestone: getMilestone(newScores),
1121
- oldScoreMilestone: getMilestone(oldScores),
910
+ newScoreRatingBase: getRatingBase(newScores, 15).toFixed(0),
911
+ oldScoreRatingBase: getRatingBase(oldScores, 30).toFixed(0),
912
+ newScoreMilestone: getMilestone(newScores, 15),
913
+ oldScoreMilestone: getMilestone(oldScores, 30),
1122
914
  });
1123
915
  break;
1124
916
  }
@@ -1185,4 +977,9 @@ class Best50 {
1185
977
  }
1186
978
  }
1187
979
  exports.Best50 = Best50;
980
+ (function (Best50) {
981
+ Best50.LXNS = lxns.LXNS;
982
+ Best50.KamaiTachi = kamaiTachi.KamaiTachi;
983
+ Best50.DivingFish = divingFish.DivingFish;
984
+ })(Best50 || (exports.Best50 = Best50 = {}));
1188
985
  //# sourceMappingURL=index.js.map