bnstooltips 1.19.2 → 1.20.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.
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { SkillTooltipProps } from "./SkillTooltip.types";
3
3
  import "./SkillTooltip.scss";
4
- declare function SkillTooltip({ data, debug, masteryPoints, masteryIsCooldown, }: SkillTooltipProps): JSX.Element;
4
+ declare function SkillTooltip({ data, debug, masteryPoints }: SkillTooltipProps): JSX.Element;
5
5
  export default SkillTooltip;
@@ -2,6 +2,5 @@ import { Skill } from "../Utilities/ISkill";
2
2
  export interface SkillTooltipProps {
3
3
  data: Skill;
4
4
  masteryPoints?: number;
5
- masteryIsCooldown?: boolean;
6
5
  debug?: boolean;
7
6
  }
@@ -3,6 +3,5 @@ import { ITooltipWrapper } from "../Utilities/Models";
3
3
  export interface SkillTooltipWrapperProps extends ITooltipWrapper {
4
4
  data: Skill;
5
5
  masteryPoints?: number;
6
- masteryIsCooldown?: boolean;
7
6
  debug?: boolean;
8
7
  }
@@ -1,4 +1,4 @@
1
- import { Skill } from "./ISkill";
1
+ import { Skill, SkillArcaneInfo } from "./ISkill";
2
2
  export declare function BuildIconPath(iconPath: string, iconIndex?: number): string;
3
3
  export declare function IsNullOrEmpty(property?: string): boolean;
4
4
  export declare function ReplaceIconsInHtmlString(htmlString: string): string;
@@ -13,4 +13,4 @@ export interface IBnsMoney {
13
13
  Copper: number;
14
14
  }
15
15
  export declare function getMoneyObj(money: number): IBnsMoney | null;
16
- export declare function GetSkillMasteryValue(points: number, isCd: boolean): number;
16
+ export declare function GetSkillMasteryValue(points: number, arcaneInfo: SkillArcaneInfo): number;
@@ -23,6 +23,16 @@ export interface Skill {
23
23
  };
24
24
  RealCastCondition: RealCastCondition;
25
25
  RealEffects: RealEffects;
26
+ ArcaneInfo: SkillArcaneInfo;
27
+ }
28
+ export interface SkillArcaneInfo {
29
+ IsCooldown: boolean;
30
+ DamageSections: {
31
+ [id: number]: number;
32
+ };
33
+ CooldownBreakpoints: {
34
+ [id: number]: number;
35
+ };
26
36
  }
27
37
  export interface RealEffects {
28
38
  Effects: {
package/build/index.es.js CHANGED
@@ -317,52 +317,62 @@ function getMoneyObj(money) {
317
317
  Silver: silver
318
318
  };
319
319
  }
320
- function GetSkillMasteryValue(points, isCd) {
321
- if (points <= 0)
320
+ function GetSkillMasteryValue(points, arcaneInfo) {
321
+ if (points <= 0 || arcaneInfo == null)
322
322
  return 0;
323
- return isCd ? GetSkillMasteryCdValueForPoints(points) : GetSkillMasteryValueForPoints(points);
323
+ return arcaneInfo.IsCooldown ? GetSkillMasteryCdValueForPoints(points, arcaneInfo.CooldownBreakpoints) : GetSkillMasteryValueForPoints(points, arcaneInfo.DamageSections);
324
324
  }
325
- function GetSkillMasteryCdValueForPoints(points) {
326
- var value = 0;
327
- if (points >= 4) {
328
- value += 1;
329
- }
330
- if (points >= 12) {
331
- value += 2;
332
- }
333
- if (points >= 24) {
334
- value += 2;
325
+ /**
326
+ * Calculates the cooldown reduction value based on skill mastery points and defined breakpoints.
327
+ *
328
+ * @param mastery - The total skill mastery points.
329
+ * @param cooldownBreakpoints - An object mapping breakpoints to their corresponding cooldown reduction values.
330
+ * @returns The total cooldown reduction value.
331
+ */
332
+ function GetSkillMasteryCdValueForPoints(mastery, cooldownBreakpoints) {
333
+ var value = 0; // Accumulator for the total cooldown reduction value
334
+ // Convert the object keys (breakpoints) to an array of numbers and sort them in ascending order
335
+ var sortedBreakpoints = Object.keys(cooldownBreakpoints)
336
+ .map(Number) // Convert string keys to numbers
337
+ .sort(function (a, b) { return a - b; }); // Sort breakpoints in ascending order
338
+ // Iterate over the sorted breakpoints
339
+ for (var _i = 0, sortedBreakpoints_1 = sortedBreakpoints; _i < sortedBreakpoints_1.length; _i++) {
340
+ var breakpoint = sortedBreakpoints_1[_i];
341
+ if (mastery >= breakpoint) {
342
+ // Add the cooldown reduction value for this breakpoint (converted from milliseconds to seconds)
343
+ value += cooldownBreakpoints[breakpoint] / 1000;
344
+ }
335
345
  }
336
- return 0 - value;
346
+ return value; // Return the total cooldown reduction value
337
347
  }
338
- function GetSkillMasteryValueForPoints(points) {
339
- var value = 0;
340
- if (points > 0) {
341
- var firstRange = Math.min(points, 15);
342
- value += firstRange * 1.9;
343
- points -= firstRange;
344
- }
345
- if (points > 0) {
346
- var secondRange = Math.min(points, 35 - 15);
347
- value += secondRange * 1.5;
348
- points -= secondRange;
349
- }
350
- if (points > 0) {
351
- var thirdRange = Math.min(points, 100 - 35);
352
- value += thirdRange * 1.1;
353
- points -= thirdRange;
354
- }
355
- if (points > 0) {
356
- var fourthRange = Math.min(points, 165 - 100);
357
- value += fourthRange * 0.7;
358
- points -= fourthRange;
359
- }
360
- if (points > 0) {
361
- var fifthRange = Math.min(points, 1000 - 165);
362
- value += fifthRange * 0.3;
363
- points -= fifthRange;
348
+ /**
349
+ * Calculates the total skill bonus based on mastery points and the given damage sections.
350
+ *
351
+ * @param mastery - The total mastery points.
352
+ * @param damageSections - An object defining breakpoints and corresponding multipliers.
353
+ * @returns The total bonus percentage.
354
+ */
355
+ function GetSkillMasteryValueForPoints(mastery, damageSections) {
356
+ var bonus = 0; // Stores the accumulated bonus percentage
357
+ var previousLimit = 0; // Keeps track of the previous breakpoint
358
+ // Iterate over the damageSections object, sorted by its keys (breakpoints)
359
+ for (var _i = 0, _a = Object.entries(damageSections); _i < _a.length; _i++) {
360
+ var _b = _a[_i], limitStr = _b[0], multiplier = _b[1];
361
+ var limit = parseInt(limitStr, 10); // Convert the key (string) to a number
362
+ if (mastery > previousLimit) {
363
+ // Calculate how many points fall within this range
364
+ var pointsInRange = Math.min(mastery - previousLimit, limit - previousLimit);
365
+ // Multiply points by the corresponding multiplier (converted to percentage)
366
+ bonus += pointsInRange * (multiplier / 10);
367
+ }
368
+ // Update the previous limit for the next iteration
369
+ previousLimit = limit;
370
+ // Stop iterating if mastery has been fully allocated
371
+ if (mastery <= limit) {
372
+ break;
373
+ }
364
374
  }
365
- return value;
375
+ return bonus;
366
376
  }
367
377
 
368
378
  //----------------------
@@ -8885,7 +8895,7 @@ function SkillConditions(_a) {
8885
8895
  }
8886
8896
 
8887
8897
  function SkillTooltip(_a) {
8888
- var data = _a.data, _b = _a.debug, debug = _b === void 0 ? false : _b, _c = _a.masteryPoints, masteryPoints = _c === void 0 ? 0 : _c, _d = _a.masteryIsCooldown, masteryIsCooldown = _d === void 0 ? false : _d;
8898
+ var data = _a.data, _b = _a.debug, debug = _b === void 0 ? false : _b, _c = _a.masteryPoints, masteryPoints = _c === void 0 ? 0 : _c;
8889
8899
  var skill = data;
8890
8900
  var tooltipBaseProps = {
8891
8901
  title: skill.Name,
@@ -8905,7 +8915,7 @@ function SkillTooltip(_a) {
8905
8915
  //bottomPart
8906
8916
  AddSubTexts(tooltipBaseProps.subInfoGroups, skill);
8907
8917
  AddBreakValue(tooltipBaseProps.subInfoGroups, skill);
8908
- AddSkillMastery(tooltipBaseProps.subInfoGroups, masteryPoints, masteryIsCooldown);
8918
+ AddSkillMastery(tooltipBaseProps.subInfoGroups, masteryPoints, skill.ArcaneInfo);
8909
8919
  AddPvpModifiers(tooltipBaseProps.subInfoGroups, skill);
8910
8920
  AddBoundaries(tooltipBaseProps.subInfoGroups, skill);
8911
8921
  AddConditions(tooltipBaseProps.subInfoGroups, skill);
@@ -8957,11 +8967,11 @@ function AddBreakValue(subInfoGroups, skill) {
8957
8967
  });
8958
8968
  }
8959
8969
  }
8960
- function AddSkillMastery(subInfoGroups, masteryPoints, masteryIsCooldown) {
8961
- if (masteryPoints == null || masteryPoints == 0)
8970
+ function AddSkillMastery(subInfoGroups, masteryPoints, arcaneInfo) {
8971
+ if (masteryPoints == null || masteryPoints == 0 || arcaneInfo == null)
8962
8972
  return;
8963
- var masteryValue = GetSkillMasteryValue(masteryPoints, masteryIsCooldown);
8964
- if (masteryValue == null || masteryValue == 0)
8973
+ var masteryValue = GetSkillMasteryValue(masteryPoints, arcaneInfo);
8974
+ if (masteryValue == null)
8965
8975
  return;
8966
8976
  var formattedMasteryValue = Number.isInteger(masteryValue) ? masteryValue.toString() : masteryValue.toFixed(2).replace(',', '.');
8967
8977
  subInfoGroups.push({
@@ -8972,7 +8982,7 @@ function AddSkillMastery(subInfoGroups, masteryPoints, masteryIsCooldown) {
8972
8982
  React.createElement("span", { className: "tooltipArg", style: { fontSize: "14px" } }, "Skill Grandmaster"),
8973
8983
  React.createElement("div", { className: "arcanemark" }),
8974
8984
  React.createElement("span", { className: "tooltipArg", style: { fontSize: "14px" } }, masteryPoints)),
8975
- !masteryIsCooldown ?
8985
+ !arcaneInfo.IsCooldown ?
8976
8986
  React.createElement("div", null,
8977
8987
  "Damage increase:\u00A0",
8978
8988
  React.createElement("span", { className: "tooltipArg" },
@@ -9195,9 +9205,9 @@ var css_248z$5 = ".TooltipBase_bns_upgradeRed_color {\n color: #FF2818;\n}\n\n.
9195
9205
  styleInject(css_248z$5);
9196
9206
 
9197
9207
  var SkillTooltipWrapper = function (_a) {
9198
- var data = _a.data, children = _a.children, _b = _a.interactive, interactive = _b === void 0 ? false : _b, _c = _a.placement, placement = _c === void 0 ? "right" : _c, _d = _a.followCursor, followCursor$1 = _d === void 0 ? false : _d, _e = _a.trigger, trigger = _e === void 0 ? "mouseenter focus" : _e, _f = _a.showArrow, showArrow = _f === void 0 ? true : _f, _g = _a.debug, debug = _g === void 0 ? false : _g, _h = _a.masteryPoints, masteryPoints = _h === void 0 ? 0 : _h, _j = _a.masteryIsCooldown, masteryIsCooldown = _j === void 0 ? false : _j;
9208
+ var data = _a.data, children = _a.children, _b = _a.interactive, interactive = _b === void 0 ? false : _b, _c = _a.placement, placement = _c === void 0 ? "right" : _c, _d = _a.followCursor, followCursor$1 = _d === void 0 ? false : _d, _e = _a.trigger, trigger = _e === void 0 ? "mouseenter focus" : _e, _f = _a.showArrow, showArrow = _f === void 0 ? true : _f, _g = _a.debug, debug = _g === void 0 ? false : _g, _h = _a.masteryPoints, masteryPoints = _h === void 0 ? 0 : _h;
9199
9209
  var spanRef = useRef(null);
9200
- var _k = useState(null), childRef = _k[0], setChildRef = _k[1];
9210
+ var _j = useState(null), childRef = _j[0], setChildRef = _j[1];
9201
9211
  /**
9202
9212
  * Mount the temporary span element.
9203
9213
  * retrieve and store the target element's reference.
@@ -9210,7 +9220,7 @@ var SkillTooltipWrapper = function (_a) {
9210
9220
  }, []);
9211
9221
  return (React.createElement(React.Fragment, null,
9212
9222
  children,
9213
- childRef ? (React.createElement(Tippy, { arrow: showArrow, trigger: trigger, plugins: [followCursor], followCursor: followCursor$1 && (!interactive && !debug), appendTo: document.body, placement: placement, animation: "fade", interactive: interactive || debug, content: React.createElement(SkillTooltip, { data: data, debug: debug, masteryPoints: masteryPoints, masteryIsCooldown: masteryIsCooldown }), theme: "grade" + 4, reference: childRef })) : (React.createElement("span", { "data-testid": "TooltipWrapper", ref: spanRef, style: { display: "none" } }))));
9223
+ childRef ? (React.createElement(Tippy, { arrow: showArrow, trigger: trigger, plugins: [followCursor], followCursor: followCursor$1 && (!interactive && !debug), appendTo: document.body, placement: placement, animation: "fade", interactive: interactive || debug, content: React.createElement(SkillTooltip, { data: data, debug: debug, masteryPoints: masteryPoints }), theme: "grade" + 4, reference: childRef })) : (React.createElement("span", { "data-testid": "TooltipWrapper", ref: spanRef, style: { display: "none" } }))));
9214
9224
  };
9215
9225
 
9216
9226
  var ServerRegion;