dune-tools/character-builder/data/spec-exploration.json
Vantz Stockwell 98a1792106 Add Dune Awakening character builder + initial project scaffolding
- character-builder/: Vue 3 + NestJS + Valkey app for planning house, class,
  character XP, 5 spec tracks, faction standing, and skill trees. Shareable
  via short link (POST /api/builds → 8-char nanoid).
- character-builder/data/: parsed JSON tables (character XP through L200,
  5 specs to L100, 2 faction standing tables, 5 class skill trees).
- character-builder/scripts/extract.py: parser that regenerates data/*.json
  from the gitignored sample-data/*.html snapshots.
- Dockerfile + docker-compose.yml: two-container deploy (app + Valkey).
- specialization-calculator/: pre-existing single-file XP/quest calculator,
  carried into the repo.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 07:30:37 -04:00

610 lines
No EOL
10 KiB
JSON

{
"header": [
"Level",
"Required XP",
"Cumulative",
"Rewards"
],
"rows": [
{
"level": 1,
"xpRequired": 100,
"totalXp": 100,
"intelPoints": 215
},
{
"level": 2,
"xpRequired": 105,
"totalXp": 205,
"intelPoints": 0
},
{
"level": 3,
"xpRequired": 110,
"totalXp": 315,
"intelPoints": 0
},
{
"level": 4,
"xpRequired": 116,
"totalXp": 431,
"intelPoints": 0
},
{
"level": 5,
"xpRequired": 122,
"totalXp": 553,
"intelPoints": 0
},
{
"level": 6,
"xpRequired": 128,
"totalXp": 681,
"intelPoints": 250
},
{
"level": 7,
"xpRequired": 135,
"totalXp": 816,
"intelPoints": 0
},
{
"level": 8,
"xpRequired": 142,
"totalXp": 958,
"intelPoints": 0
},
{
"level": 9,
"xpRequired": 149,
"totalXp": 1107,
"intelPoints": 0
},
{
"level": 10,
"xpRequired": 157,
"totalXp": 1264,
"intelPoints": 2
},
{
"level": 11,
"xpRequired": 164,
"totalXp": 1428,
"intelPoints": 0
},
{
"level": 12,
"xpRequired": 171,
"totalXp": 1599,
"intelPoints": 0
},
{
"level": 13,
"xpRequired": 178,
"totalXp": 1777,
"intelPoints": 0
},
{
"level": 14,
"xpRequired": 186,
"totalXp": 1963,
"intelPoints": 0
},
{
"level": 15,
"xpRequired": 194,
"totalXp": 2157,
"intelPoints": 0
},
{
"level": 16,
"xpRequired": 202,
"totalXp": 2359,
"intelPoints": 0
},
{
"level": 17,
"xpRequired": 211,
"totalXp": 2570,
"intelPoints": 5150
},
{
"level": 18,
"xpRequired": 220,
"totalXp": 2790,
"intelPoints": 0
},
{
"level": 19,
"xpRequired": 229,
"totalXp": 3019,
"intelPoints": 0
},
{
"level": 20,
"xpRequired": 239,
"totalXp": 3258,
"intelPoints": 5150
},
{
"level": 21,
"xpRequired": 246,
"totalXp": 3504,
"intelPoints": 0
},
{
"level": 22,
"xpRequired": 253,
"totalXp": 3757,
"intelPoints": 0
},
{
"level": 23,
"xpRequired": 260,
"totalXp": 4017,
"intelPoints": 1050
},
{
"level": 24,
"xpRequired": 268,
"totalXp": 4285,
"intelPoints": 0
},
{
"level": 25,
"xpRequired": 276,
"totalXp": 4561,
"intelPoints": 1015
},
{
"level": 26,
"xpRequired": 284,
"totalXp": 4845,
"intelPoints": 0
},
{
"level": 27,
"xpRequired": 292,
"totalXp": 5137,
"intelPoints": 0
},
{
"level": 28,
"xpRequired": 301,
"totalXp": 5438,
"intelPoints": 0
},
{
"level": 29,
"xpRequired": 310,
"totalXp": 5748,
"intelPoints": 0
},
{
"level": 30,
"xpRequired": 319,
"totalXp": 6067,
"intelPoints": 0
},
{
"level": 31,
"xpRequired": 326,
"totalXp": 6393,
"intelPoints": 0
},
{
"level": 32,
"xpRequired": 334,
"totalXp": 6727,
"intelPoints": 0
},
{
"level": 33,
"xpRequired": 342,
"totalXp": 7069,
"intelPoints": 10100
},
{
"level": 34,
"xpRequired": 350,
"totalXp": 7419,
"intelPoints": 0
},
{
"level": 35,
"xpRequired": 358,
"totalXp": 7777,
"intelPoints": 1550
},
{
"level": 36,
"xpRequired": 366,
"totalXp": 8143,
"intelPoints": 0
},
{
"level": 37,
"xpRequired": 375,
"totalXp": 8518,
"intelPoints": 0
},
{
"level": 38,
"xpRequired": 384,
"totalXp": 8902,
"intelPoints": 15500
},
{
"level": 39,
"xpRequired": 393,
"totalXp": 9295,
"intelPoints": 0
},
{
"level": 40,
"xpRequired": 402,
"totalXp": 9697,
"intelPoints": 15
},
{
"level": 41,
"xpRequired": 410,
"totalXp": 10107,
"intelPoints": 0
},
{
"level": 42,
"xpRequired": 418,
"totalXp": 10525,
"intelPoints": 0
},
{
"level": 43,
"xpRequired": 426,
"totalXp": 10951,
"intelPoints": 0
},
{
"level": 44,
"xpRequired": 434,
"totalXp": 11385,
"intelPoints": 0
},
{
"level": 45,
"xpRequired": 442,
"totalXp": 11827,
"intelPoints": 0
},
{
"level": 46,
"xpRequired": 450,
"totalXp": 12277,
"intelPoints": 0
},
{
"level": 47,
"xpRequired": 459,
"totalXp": 12736,
"intelPoints": 0
},
{
"level": 48,
"xpRequired": 468,
"totalXp": 13204,
"intelPoints": 2050
},
{
"level": 49,
"xpRequired": 477,
"totalXp": 13681,
"intelPoints": 0
},
{
"level": 50,
"xpRequired": 486,
"totalXp": 14167,
"intelPoints": 2015
},
{
"level": 51,
"xpRequired": 494,
"totalXp": 14661,
"intelPoints": 0
},
{
"level": 52,
"xpRequired": 502,
"totalXp": 15163,
"intelPoints": 0
},
{
"level": 53,
"xpRequired": 510,
"totalXp": 15673,
"intelPoints": 0
},
{
"level": 54,
"xpRequired": 518,
"totalXp": 16191,
"intelPoints": 0
},
{
"level": 55,
"xpRequired": 526,
"totalXp": 16717,
"intelPoints": 2050
},
{
"level": 56,
"xpRequired": 534,
"totalXp": 17251,
"intelPoints": 0
},
{
"level": 57,
"xpRequired": 543,
"totalXp": 17794,
"intelPoints": 0
},
{
"level": 58,
"xpRequired": 552,
"totalXp": 18346,
"intelPoints": 0
},
{
"level": 59,
"xpRequired": 561,
"totalXp": 18907,
"intelPoints": 0
},
{
"level": 60,
"xpRequired": 570,
"totalXp": 19477,
"intelPoints": 0
},
{
"level": 61,
"xpRequired": 575,
"totalXp": 20052,
"intelPoints": 0
},
{
"level": 62,
"xpRequired": 580,
"totalXp": 20632,
"intelPoints": 2550
},
{
"level": 63,
"xpRequired": 585,
"totalXp": 21217,
"intelPoints": 0
},
{
"level": 64,
"xpRequired": 590,
"totalXp": 21807,
"intelPoints": 0
},
{
"level": 65,
"xpRequired": 595,
"totalXp": 22402,
"intelPoints": 2550
},
{
"level": 66,
"xpRequired": 600,
"totalXp": 23002,
"intelPoints": 0
},
{
"level": 67,
"xpRequired": 606,
"totalXp": 23608,
"intelPoints": 0
},
{
"level": 68,
"xpRequired": 612,
"totalXp": 24220,
"intelPoints": 2550
},
{
"level": 69,
"xpRequired": 618,
"totalXp": 24838,
"intelPoints": 0
},
{
"level": 70,
"xpRequired": 624,
"totalXp": 25462,
"intelPoints": 0
},
{
"level": 71,
"xpRequired": 624,
"totalXp": 26086,
"intelPoints": 25350
},
{
"level": 72,
"xpRequired": 624,
"totalXp": 26710,
"intelPoints": 0
},
{
"level": 73,
"xpRequired": 624,
"totalXp": 27334,
"intelPoints": 0
},
{
"level": 74,
"xpRequired": 624,
"totalXp": 27958,
"intelPoints": 0
},
{
"level": 75,
"xpRequired": 624,
"totalXp": 28582,
"intelPoints": 30
},
{
"level": 76,
"xpRequired": 624,
"totalXp": 29206,
"intelPoints": 0
},
{
"level": 77,
"xpRequired": 624,
"totalXp": 29830,
"intelPoints": 3015
},
{
"level": 78,
"xpRequired": 624,
"totalXp": 30454,
"intelPoints": 0
},
{
"level": 79,
"xpRequired": 624,
"totalXp": 31078,
"intelPoints": 0
},
{
"level": 80,
"xpRequired": 624,
"totalXp": 31702,
"intelPoints": 0
},
{
"level": 81,
"xpRequired": 624,
"totalXp": 32326,
"intelPoints": 0
},
{
"level": 82,
"xpRequired": 624,
"totalXp": 32950,
"intelPoints": 0
},
{
"level": 83,
"xpRequired": 624,
"totalXp": 33574,
"intelPoints": 3050
},
{
"level": 84,
"xpRequired": 624,
"totalXp": 34198,
"intelPoints": 0
},
{
"level": 85,
"xpRequired": 624,
"totalXp": 34822,
"intelPoints": 3050
},
{
"level": 86,
"xpRequired": 624,
"totalXp": 35446,
"intelPoints": 0
},
{
"level": 87,
"xpRequired": 624,
"totalXp": 36070,
"intelPoints": 0
},
{
"level": 88,
"xpRequired": 624,
"totalXp": 36694,
"intelPoints": 35100
},
{
"level": 89,
"xpRequired": 624,
"totalXp": 37318,
"intelPoints": 0
},
{
"level": 90,
"xpRequired": 624,
"totalXp": 37942,
"intelPoints": 0
},
{
"level": 91,
"xpRequired": 624,
"totalXp": 38566,
"intelPoints": 0
},
{
"level": 92,
"xpRequired": 624,
"totalXp": 39190,
"intelPoints": 0
},
{
"level": 93,
"xpRequired": 624,
"totalXp": 39814,
"intelPoints": 0
},
{
"level": 94,
"xpRequired": 624,
"totalXp": 40438,
"intelPoints": 0
},
{
"level": 95,
"xpRequired": 624,
"totalXp": 41062,
"intelPoints": 3550
},
{
"level": 96,
"xpRequired": 624,
"totalXp": 41686,
"intelPoints": 0
},
{
"level": 97,
"xpRequired": 624,
"totalXp": 42310,
"intelPoints": 0
},
{
"level": 98,
"xpRequired": 624,
"totalXp": 42934,
"intelPoints": 0
},
{
"level": 99,
"xpRequired": 624,
"totalXp": 43558,
"intelPoints": 0
},
{
"level": 100,
"xpRequired": 624,
"totalXp": 44182,
"intelPoints": 4015
}
]
}