@quenty/experiencecalculator 2.5.0 → 2.5.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.5.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/experiencecalculator@2.5.0...@quenty/experiencecalculator@2.5.1) (2025-04-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Add types to packages ([2374fb2](https://github.com/Quenty/NevermoreEngine/commit/2374fb2b043cfbe0e9b507b3316eec46a4e353a0))
12
+
13
+
14
+
15
+
16
+
6
17
  # [2.5.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/experiencecalculator@2.4.0...@quenty/experiencecalculator@2.5.0) (2025-04-02)
7
18
 
8
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/experiencecalculator",
3
- "version": "2.5.0",
3
+ "version": "2.5.1",
4
4
  "description": "Calculate experience on an exponential curve and perform relevant calculations Uses formulas from stackoverflow.com/questions/6954874/php-game-formula-to-calculate-a-level-based-on-exp",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -28,5 +28,5 @@
28
28
  "publishConfig": {
29
29
  "access": "public"
30
30
  },
31
- "gitHead": "e8ea56930e65322fcffc05a1556d5df988068f0b"
31
+ "gitHead": "78c3ac0ab08dd18085b6e6e6e4f745e76ed99f68"
32
32
  }
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Calculate experience on an exponential curve and perform relevant calculations.
3
4
 
@@ -17,18 +18,23 @@
17
18
 
18
19
  local ExperienceUtils = {}
19
20
 
21
+ export type ExperienceConfig = {
22
+ factor: number,
23
+ maxLevel: number,
24
+ }
25
+
20
26
  --[=[
21
27
  Creates a new experience configuration to be used
22
28
 
23
29
  @param options ExperienceConfig
24
30
  @return ExperienceConfig
25
31
  ]=]
26
- function ExperienceUtils.createExperienceConfig(options)
32
+ function ExperienceUtils.createExperienceConfig(options: ExperienceConfig): ExperienceConfig
27
33
  assert(type(options) == "table", "Bad options")
28
34
 
29
35
  return {
30
- factor = options.factor or 200;
31
- maxLevel = options.maxLevel or math.huge;
36
+ factor = options.factor or 200,
37
+ maxLevel = options.maxLevel or math.huge,
32
38
  }
33
39
  end
34
40
 
@@ -38,9 +44,8 @@ end
38
44
  @param value any
39
45
  @return boolean
40
46
  ]=]
41
- function ExperienceUtils.isExperienceConfig(value)
42
- return type(value) == "table"
43
- and type(value.factor) == "number"
47
+ function ExperienceUtils.isExperienceConfig(value: any): boolean
48
+ return type(value) == "table" and type(value.factor) == "number"
44
49
  end
45
50
 
46
51
  --[=[
@@ -50,15 +55,12 @@ end
50
55
  @param totalExperience number
51
56
  @return number -- Level
52
57
  ]=]
53
- function ExperienceUtils.getLevel(config, totalExperience)
58
+ function ExperienceUtils.getLevel(config: ExperienceConfig, totalExperience: number): number
54
59
  assert(ExperienceUtils.isExperienceConfig(config), "Bad experience config")
55
60
  assert(type(totalExperience) == "number", "Bad totalExperience")
56
61
 
57
62
  local factor = config.factor
58
- local level = math.floor(
59
- (factor
60
- + math.sqrt(factor*factor - 4*factor*(-totalExperience)))
61
- /(2*factor))
63
+ local level = math.floor((factor + math.sqrt(factor * factor - 4 * factor * -totalExperience)) / (2 * factor))
62
64
  if level >= config.maxLevel then
63
65
  return config.maxLevel
64
66
  else
@@ -75,11 +77,11 @@ end
75
77
  @param level number
76
78
  @return number -- Total experience required for a level
77
79
  ]=]
78
- function ExperienceUtils.experienceFromLevel(config, level)
80
+ function ExperienceUtils.experienceFromLevel(config: ExperienceConfig, level: number): number
79
81
  assert(ExperienceUtils.isExperienceConfig(config), "Bad experience config")
80
82
  assert(type(level) == "number", "Bad level")
81
83
 
82
- return config.factor*level*(level - 1)
84
+ return config.factor * level * (level - 1)
83
85
  end
84
86
 
85
87
  --[=[
@@ -89,7 +91,7 @@ end
89
91
  @param totalExperience number
90
92
  @return number
91
93
  ]=]
92
- function ExperienceUtils.levelExperienceEarned(config, totalExperience)
94
+ function ExperienceUtils.levelExperienceEarned(config: ExperienceConfig, totalExperience: number): number
93
95
  assert(ExperienceUtils.isExperienceConfig(config), "Bad experience config")
94
96
  assert(type(totalExperience) == "number", "Bad totalExperience")
95
97
 
@@ -114,7 +116,7 @@ end
114
116
  @param totalExperience number
115
117
  @return number
116
118
  ]=]
117
- function ExperienceUtils.levelExperienceLeft(config, totalExperience)
119
+ function ExperienceUtils.levelExperienceLeft(config: ExperienceConfig, totalExperience: number): number
118
120
  assert(ExperienceUtils.isExperienceConfig(config), "Bad experience config")
119
121
  assert(type(totalExperience) == "number", "Bad totalExperience")
120
122
 
@@ -139,7 +141,7 @@ end
139
141
  @param totalExperience number -- Current experience of player
140
142
  @return number -- Total required for next level
141
143
  ]=]
142
- function ExperienceUtils.levelExperienceRequired(config, totalExperience)
144
+ function ExperienceUtils.levelExperienceRequired(config: ExperienceConfig, totalExperience: number): number
143
145
  assert(ExperienceUtils.isExperienceConfig(config), "Bad experience config")
144
146
  assert(type(totalExperience) == "number", "Bad totalExperience")
145
147
 
@@ -164,7 +166,7 @@ end
164
166
  @param totalExperience number
165
167
  @return number
166
168
  ]=]
167
- function ExperienceUtils.percentLevelComplete(config, totalExperience)
169
+ function ExperienceUtils.percentLevelComplete(config: ExperienceConfig, totalExperience: number): number
168
170
  assert(ExperienceUtils.isExperienceConfig(config), "Bad experience config")
169
171
  assert(type(totalExperience) == "number", "Bad totalExperience")
170
172