@rpg-engine/long-bow 0.8.81 → 0.8.83

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,13 +1,15 @@
1
+ import { CharacterClass } from '@rpg-engine/shared';
1
2
  import React from 'react';
2
3
  export interface ISkillProgressBarProps {
3
4
  skillName: string;
5
+ skillKey?: string;
6
+ characterClass?: CharacterClass;
4
7
  bgColor: string;
5
8
  level: number;
6
9
  skillPoints: number;
7
10
  texturePath: string;
8
11
  showSkillPoints?: boolean;
9
12
  skillPointsToNextLevel: number;
10
- skillPointsForCurrentLevel: number;
11
13
  atlasJSON: any;
12
14
  atlasIMG: any;
13
15
  buffAndDebuff?: number;
@@ -1,8 +1,8 @@
1
- import { CharacterClass, ISkill } from '@rpg-engine/shared';
1
+ import { ISkill, CharacterClass } from '@rpg-engine/shared';
2
2
  import React from 'react';
3
3
  export interface ISkillContainerProps {
4
4
  skill: ISkill;
5
- characterClass: CharacterClass;
5
+ characterClass?: CharacterClass;
6
6
  onCloseButton: () => void;
7
7
  atlasJSON: any;
8
8
  atlasIMG: any;
@@ -36512,22 +36512,52 @@ var Tooltip = /*#__PURE__*/styled__default.div.withConfig({
36512
36512
  var SkillProgressBar = function SkillProgressBar(_ref) {
36513
36513
  var bgColor = _ref.bgColor,
36514
36514
  skillName = _ref.skillName,
36515
+ skillKey = _ref.skillKey,
36516
+ characterClass = _ref.characterClass,
36515
36517
  level = _ref.level,
36516
36518
  currentSkillPoints = _ref.skillPoints,
36517
- skillPointsToNextLevel = _ref.skillPointsToNextLevel,
36518
- skillPointsForCurrentLevel = _ref.skillPointsForCurrentLevel,
36519
36519
  texturePath = _ref.texturePath,
36520
36520
  _ref$showSkillPoints = _ref.showSkillPoints,
36521
36521
  showSkillPoints = _ref$showSkillPoints === void 0 ? true : _ref$showSkillPoints,
36522
36522
  atlasIMG = _ref.atlasIMG,
36523
36523
  atlasJSON = _ref.atlasJSON,
36524
36524
  buffAndDebuff = _ref.buffAndDebuff;
36525
- // Skill points needed to start the current level (passed from parent, calculated with correct formula)
36526
- var baseSkillPoints = skillPointsForCurrentLevel;
36525
+ // Use CharacterClass.None as default if skillKey is provided but characterClass is not
36526
+ var effectiveClass = characterClass != null ? characterClass : shared.CharacterClass.None;
36527
+ // Calculate the effective level based on actual SP (handles data inconsistencies)
36528
+ var calculateEffectiveLevel = function calculateEffectiveLevel() {
36529
+ if (!skillKey) {
36530
+ return level; // Fallback to stored level for general "Level" display
36531
+ }
36532
+ var _getSkillConstants = shared.getSkillConstants(skillKey, effectiveClass),
36533
+ A = _getSkillConstants.A,
36534
+ b = _getSkillConstants.b,
36535
+ c = _getSkillConstants.c;
36536
+ var actualLevel = Math.floor(shared.getLevelFromSP(currentSkillPoints, A, b, c));
36537
+ return Math.max(c, actualLevel); // At least starting level
36538
+ };
36539
+ var effectiveLevel = calculateEffectiveLevel();
36540
+ // Calculate progress based on actual SP position
36527
36541
  var calculateProgress = function calculateProgress() {
36528
- var totalPointsForLevelUp = Math.max(1, skillPointsToNextLevel - baseSkillPoints);
36529
- var excessSkillPoints = Math.max(0, currentSkillPoints - baseSkillPoints);
36530
- return Math.min(100, Math.max(0, excessSkillPoints / totalPointsForLevelUp * 100));
36542
+ if (!skillKey) {
36543
+ // Fallback for general "Level" display: simple ratio of current SP to next level
36544
+ var spForCurrentLevel = shared.getSPForLevel(level);
36545
+ var _spForNextLevel = shared.getSPForLevel(level + 1);
36546
+ var _range = _spForNextLevel - spForCurrentLevel;
36547
+ var _progress = currentSkillPoints - spForCurrentLevel;
36548
+ return Math.min(100, Math.max(0, _progress / _range * 100));
36549
+ }
36550
+ var _getSkillConstants2 = shared.getSkillConstants(skillKey, effectiveClass),
36551
+ A = _getSkillConstants2.A,
36552
+ b = _getSkillConstants2.b,
36553
+ c = _getSkillConstants2.c;
36554
+ // Calculate SP thresholds for current effective level
36555
+ var spForEffectiveLevel = shared.getSPForLevelExponential(effectiveLevel, A, b, c);
36556
+ var spForNextLevel = shared.getSPForLevelExponential(effectiveLevel + 1, A, b, c);
36557
+ // Progress within current effective level
36558
+ var range = spForNextLevel - spForEffectiveLevel;
36559
+ var progressInLevel = currentSkillPoints - spForEffectiveLevel;
36560
+ return Math.min(100, Math.max(0, progressInLevel / Math.max(1, range) * 100));
36531
36561
  };
36532
36562
  var progress = calculateProgress();
36533
36563
  var formatBuffAndDebuff = function formatBuffAndDebuff(value) {
@@ -36538,7 +36568,7 @@ var SkillProgressBar = function SkillProgressBar(_ref) {
36538
36568
  var result = level * (buffAndDebuff / 100);
36539
36569
  return result > 0 ? "+" + result.toFixed(2) : "" + result.toFixed(2);
36540
36570
  };
36541
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(ProgressTitle, null, buffAndDebuff !== undefined && React__default.createElement(React__default.Fragment, null, buffAndDebuff > 0 ? React__default.createElement(BuffAndDebuffContainer, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameBuff, null, skillName), React__default.createElement(TitleNameBuff, null, "lv ", level, " (", skillsBuffsCalc(level, buffAndDebuff), ")")), React__default.createElement(TitleNameBuffContainer, null, React__default.createElement(TitleNameBuff, null, "(+", formatBuffAndDebuff(buffAndDebuff), "%)"))) : buffAndDebuff < 0 ? React__default.createElement(React__default.Fragment, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameDebuff, null, skillName), React__default.createElement(TitleNameDebuff, null, "lv ", level, " (", skillsBuffsCalc(level, buffAndDebuff), ")")), React__default.createElement("div", null, React__default.createElement(TitleNameDebuff, null, "(", formatBuffAndDebuff(buffAndDebuff), "%)"))) : React__default.createElement(TitleName, null, skillName)), !buffAndDebuff && React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleName, null, skillName), React__default.createElement(ValueDisplay, null, "lv ", level))), React__default.createElement(ProgressBody, null, React__default.createElement(ProgressIconContainer, null, atlasIMG && atlasJSON ? React__default.createElement(SpriteContainer$4, null, React__default.createElement(ErrorBoundary, null, React__default.createElement(SpriteFromAtlas, {
36571
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(ProgressTitle, null, buffAndDebuff !== undefined && React__default.createElement(React__default.Fragment, null, buffAndDebuff > 0 ? React__default.createElement(BuffAndDebuffContainer, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameBuff, null, skillName), React__default.createElement(TitleNameBuff, null, "lv ", effectiveLevel, " (", skillsBuffsCalc(effectiveLevel, buffAndDebuff), ")")), React__default.createElement(TitleNameBuffContainer, null, React__default.createElement(TitleNameBuff, null, "(+", formatBuffAndDebuff(buffAndDebuff), "%)"))) : buffAndDebuff < 0 ? React__default.createElement(React__default.Fragment, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameDebuff, null, skillName), React__default.createElement(TitleNameDebuff, null, "lv ", effectiveLevel, " (", skillsBuffsCalc(effectiveLevel, buffAndDebuff), ")")), React__default.createElement("div", null, React__default.createElement(TitleNameDebuff, null, "(", formatBuffAndDebuff(buffAndDebuff), "%)"))) : React__default.createElement(TitleName, null, skillName)), !buffAndDebuff && React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleName, null, skillName), React__default.createElement(ValueDisplay, null, "lv ", effectiveLevel))), React__default.createElement(ProgressBody, null, React__default.createElement(ProgressIconContainer, null, atlasIMG && atlasJSON ? React__default.createElement(SpriteContainer$4, null, React__default.createElement(ErrorBoundary, null, React__default.createElement(SpriteFromAtlas, {
36542
36572
  atlasIMG: atlasIMG,
36543
36573
  atlasJSON: atlasJSON,
36544
36574
  spriteKey: texturePath,
@@ -36677,39 +36707,48 @@ var SkillsContainer = function SkillsContainer(_ref) {
36677
36707
  var skillCategory = skillProps[category];
36678
36708
  var skillCategoryColor = skillCategory.color;
36679
36709
  var output = [];
36710
+ var _loop = function _loop() {
36711
+ var _Object$entries$_i = _Object$entries[_i],
36712
+ key = _Object$entries$_i[0],
36713
+ value = _Object$entries$_i[1];
36714
+ if (key === 'stamina') {
36715
+ return 0; // continue
36716
+ }
36717
+ //@ts-ignore
36718
+ var skillDetails = skill[key];
36719
+ if (!skillDetails) {
36720
+ return 0; // continue
36721
+ }
36722
+ // Calculate skillPointsToNextLevel using exponential formula if characterClass available
36723
+ var calcSkillPointsToNextLevel = function calcSkillPointsToNextLevel() {
36724
+ if (characterClass) {
36725
+ var _getSkillConstants = shared.getSkillConstants(key, characterClass),
36726
+ A = _getSkillConstants.A,
36727
+ b = _getSkillConstants.b,
36728
+ c = _getSkillConstants.c;
36729
+ return Math.round(shared.getSPForLevelExponential(skillDetails.level + 1, A, b, c));
36730
+ }
36731
+ return Math.round(shared.getSPForLevel(skillDetails.level + 1));
36732
+ };
36733
+ output.push(React__default.createElement(SkillProgressBar, {
36734
+ key: key,
36735
+ skillName: skillNameMap[key],
36736
+ skillKey: key,
36737
+ characterClass: characterClass,
36738
+ bgColor: skillCategoryColor,
36739
+ level: skillDetails.level || 0,
36740
+ skillPoints: Math.round(skillDetails.skillPoints) || 0,
36741
+ skillPointsToNextLevel: calcSkillPointsToNextLevel(),
36742
+ texturePath: value,
36743
+ atlasIMG: atlasIMG,
36744
+ atlasJSON: atlasJSON,
36745
+ buffAndDebuff: skillDetails.buffAndDebuff
36746
+ }));
36747
+ },
36748
+ _ret;
36680
36749
  for (var _i = 0, _Object$entries = Object.entries(skillCategory.values); _i < _Object$entries.length; _i++) {
36681
- var _Object$entries$_i = _Object$entries[_i],
36682
- key = _Object$entries$_i[0],
36683
- value = _Object$entries$_i[1];
36684
- if (key === 'stamina') {
36685
- continue;
36686
- }
36687
- //@ts-ignore
36688
- var skillDetails = skill[key];
36689
- if (!skillDetails) {
36690
- continue;
36691
- }
36692
- // Get the skill constants for this skill and character class
36693
- var _getSkillConstants = shared.getSkillConstants(key, characterClass),
36694
- A = _getSkillConstants.A,
36695
- b = _getSkillConstants.b,
36696
- c = _getSkillConstants.c;
36697
- // Calculate SP thresholds using exponential formula
36698
- var skillPointsForCurrentLevel = shared.getSPForLevelExponential(skillDetails.level, A, b, c);
36699
- var skillPointsToNextLevel = shared.getSPForLevelExponential(skillDetails.level + 1, A, b, c);
36700
- output.push(React__default.createElement(SkillProgressBar, {
36701
- key: key,
36702
- skillName: skillNameMap[key],
36703
- bgColor: skillCategoryColor,
36704
- level: skillDetails.level || 0,
36705
- skillPoints: Math.round(skillDetails.skillPoints) || 0,
36706
- skillPointsToNextLevel: skillPointsToNextLevel,
36707
- skillPointsForCurrentLevel: skillPointsForCurrentLevel,
36708
- texturePath: value,
36709
- atlasIMG: atlasIMG,
36710
- atlasJSON: atlasJSON,
36711
- buffAndDebuff: skillDetails.buffAndDebuff
36712
- }));
36750
+ _ret = _loop();
36751
+ if (_ret === 0) continue;
36713
36752
  }
36714
36753
  return output;
36715
36754
  };
@@ -36730,7 +36769,6 @@ var SkillsContainer = function SkillsContainer(_ref) {
36730
36769
  level: Math.round(skill.level) || 0,
36731
36770
  skillPoints: Math.round(skill.experience) || 0,
36732
36771
  skillPointsToNextLevel: Math.round(shared.getXPForLevel(skill.level + 1)) || 0,
36733
- skillPointsForCurrentLevel: Math.round(shared.getXPForLevel(skill.level)) || 0,
36734
36772
  texturePath: 'swords/broad-sword.png',
36735
36773
  atlasIMG: atlasIMG,
36736
36774
  atlasJSON: atlasJSON