aboutsummaryrefslogtreecommitdiff
path: root/internal/player/xp.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-09 05:59:20 -0400
committerhistoria <[not public]>2026-06-09 05:59:20 -0400
commit9eb5ab1818b6b19501fd7209db1987c9e06cc919 (patch)
tree76e046b0bf611dfe939a8c8f6507467de2e9e20f /internal/player/xp.go
downloadthehouseoficarus-9eb5ab1818b6b19501fd7209db1987c9e06cc919.tar.gz
first commit
Diffstat (limited to 'internal/player/xp.go')
-rw-r--r--internal/player/xp.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/player/xp.go b/internal/player/xp.go
new file mode 100644
index 0000000..ef59a25
--- /dev/null
+++ b/internal/player/xp.go
@@ -0,0 +1,41 @@
+package player
+
+var XPTable = [100]int{
+ 0, 83, 174, 276, 388, 512, 650, 801, 969, 1154,
+ 1358, 1584, 1833, 2107, 2411, 2746, 3115, 3523, 3973, 4470,
+ 5018, 5624, 6291, 7028, 7842, 8740, 9730, 10824, 12031, 13363,
+ 14833, 16456, 18247, 20224, 22406, 24815, 27473, 30408, 33648, 37224,
+ 41171, 45529, 50339, 55649, 61512, 67983, 75127, 83014, 91721, 101333,
+ 111945, 123660, 136594, 150872, 166636, 184040, 203254, 224466, 247886, 273742,
+ 302288, 333804, 368599, 407015, 449428, 496254, 547953, 605032, 668051, 737627,
+ 814445, 899257, 992895, 1096278, 1210421, 1336443, 1475581, 1629200, 1798808, 1986068,
+ 2192818, 2421087, 2673114, 2951373, 3258594, 3597792, 3972294, 4385776, 4842295, 5346332,
+ 5902831, 6517253, 7195629, 7944614, 8771558, 9684577, 10692629, 11805606, 13034431,
+}
+
+func LevelForXP(xp int) int {
+ for level := 1; level < 99; level++ {
+ if xp < XPTable[level] {
+ return level
+ }
+ }
+ return 99
+}
+
+func XPForLevel(level int) int {
+ if level <= 1 {
+ return 0
+ }
+ if level > 99 {
+ level = 99
+ }
+ return XPTable[level-1]
+}
+
+func XPForNextLevel(xp int) int {
+ current := LevelForXP(xp)
+ if current >= 99 {
+ return 0
+ }
+ return XPTable[current] - xp
+}