diff --git a/character-builder/data/spec-combat.json b/character-builder/data/spec-combat.json
index d09f120..0edc5d3 100644
--- a/character-builder/data/spec-combat.json
+++ b/character-builder/data/spec-combat.json
@@ -10,13 +10,30 @@
"level": 1,
"xpRequired": 100,
"totalXp": 100,
- "intelPoints": 23
+ "intelPoints": 23,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "2 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 2,
"xpRequired": 105,
"totalXp": 205,
- "intelPoints": 25
+ "intelPoints": 25,
+ "perks": [
+ {
+ "name": "Max Stamina Increase",
+ "cost": "2 Spice Melange",
+ "description": "Increased maximum stamina.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxstamina_d.webp"
+ }
+ ]
},
{
"level": 3,
@@ -28,7 +45,16 @@
"level": 4,
"xpRequired": 116,
"totalXp": 431,
- "intelPoints": 21
+ "intelPoints": 21,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "2 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 5,
@@ -40,7 +66,15 @@
"level": 6,
"xpRequired": 128,
"totalXp": 681,
- "intelPoints": 215
+ "intelPoints": 215,
+ "perks": [
+ {
+ "name": "Max Health Increase",
+ "cost": "2 Spice Melange",
+ "description": "Increased maximum health.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxhealth_d.webp"
+ }
+ ]
},
{
"level": 7,
@@ -52,7 +86,16 @@
"level": 8,
"xpRequired": 142,
"totalXp": 958,
- "intelPoints": 23
+ "intelPoints": 23,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "2 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 9,
@@ -70,7 +113,16 @@
"level": 11,
"xpRequired": 164,
"totalXp": 1428,
- "intelPoints": 51
+ "intelPoints": 51,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "5 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 12,
@@ -88,7 +140,16 @@
"level": 14,
"xpRequired": 186,
"totalXp": 1963,
- "intelPoints": 51
+ "intelPoints": 51,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "5 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 15,
@@ -100,7 +161,15 @@
"level": 16,
"xpRequired": 202,
"totalXp": 2359,
- "intelPoints": 520
+ "intelPoints": 520,
+ "perks": [
+ {
+ "name": "Max Stamina Increase",
+ "cost": "5 Spice Melange",
+ "description": "Increased maximum stamina.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxstamina_d.webp"
+ }
+ ]
},
{
"level": 17,
@@ -112,7 +181,16 @@
"level": 18,
"xpRequired": 220,
"totalXp": 2790,
- "intelPoints": 53
+ "intelPoints": 53,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "5 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 19,
@@ -130,7 +208,16 @@
"level": 21,
"xpRequired": 246,
"totalXp": 3504,
- "intelPoints": 51
+ "intelPoints": 51,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "5 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 22,
@@ -148,7 +235,16 @@
"level": 24,
"xpRequired": 268,
"totalXp": 4285,
- "intelPoints": 101
+ "intelPoints": 101,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "10 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 25,
@@ -160,7 +256,15 @@
"level": 26,
"xpRequired": 284,
"totalXp": 4845,
- "intelPoints": 105
+ "intelPoints": 105,
+ "perks": [
+ {
+ "name": "Max Health Increase",
+ "cost": "10 Spice Melange",
+ "description": "Increased maximum health.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxhealth_d.webp"
+ }
+ ]
},
{
"level": 27,
@@ -172,7 +276,16 @@
"level": 28,
"xpRequired": 301,
"totalXp": 5438,
- "intelPoints": 103
+ "intelPoints": 103,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "10 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 29,
@@ -190,7 +303,16 @@
"level": 31,
"xpRequired": 326,
"totalXp": 6393,
- "intelPoints": 101
+ "intelPoints": 101,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "10 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 32,
@@ -208,7 +330,16 @@
"level": 34,
"xpRequired": 350,
"totalXp": 7419,
- "intelPoints": 101
+ "intelPoints": 101,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "10 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 35,
@@ -220,7 +351,15 @@
"level": 36,
"xpRequired": 366,
"totalXp": 8143,
- "intelPoints": 155
+ "intelPoints": 155,
+ "perks": [
+ {
+ "name": "Max Stamina Increase",
+ "cost": "15 Spice Melange",
+ "description": "Increased maximum stamina.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxstamina_d.webp"
+ }
+ ]
},
{
"level": 37,
@@ -232,7 +371,16 @@
"level": 38,
"xpRequired": 384,
"totalXp": 8902,
- "intelPoints": 153
+ "intelPoints": 153,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "15 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 39,
@@ -250,7 +398,16 @@
"level": 41,
"xpRequired": 410,
"totalXp": 10107,
- "intelPoints": 151
+ "intelPoints": 151,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "15 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 42,
@@ -268,7 +425,16 @@
"level": 44,
"xpRequired": 434,
"totalXp": 11385,
- "intelPoints": 151
+ "intelPoints": 151,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "15 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 45,
@@ -292,7 +458,16 @@
"level": 48,
"xpRequired": 468,
"totalXp": 13204,
- "intelPoints": 153
+ "intelPoints": 153,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "15 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 49,
@@ -310,7 +485,16 @@
"level": 51,
"xpRequired": 494,
"totalXp": 14661,
- "intelPoints": 201
+ "intelPoints": 201,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "20 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 52,
@@ -328,7 +512,16 @@
"level": 54,
"xpRequired": 518,
"totalXp": 16191,
- "intelPoints": 201
+ "intelPoints": 201,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "20 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 55,
@@ -340,7 +533,15 @@
"level": 56,
"xpRequired": 534,
"totalXp": 17251,
- "intelPoints": 205
+ "intelPoints": 205,
+ "perks": [
+ {
+ "name": "Max Health Increase",
+ "cost": "20 Spice Melange",
+ "description": "Increased maximum health.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxhealth_d.webp"
+ }
+ ]
},
{
"level": 57,
@@ -352,7 +553,16 @@
"level": 58,
"xpRequired": 552,
"totalXp": 18346,
- "intelPoints": 203
+ "intelPoints": 203,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "20 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 59,
@@ -370,7 +580,16 @@
"level": 61,
"xpRequired": 575,
"totalXp": 20052,
- "intelPoints": 201
+ "intelPoints": 201,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "20 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 62,
@@ -388,7 +607,16 @@
"level": 64,
"xpRequired": 590,
"totalXp": 21807,
- "intelPoints": 251
+ "intelPoints": 251,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "25 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 65,
@@ -400,7 +628,15 @@
"level": 66,
"xpRequired": 600,
"totalXp": 23002,
- "intelPoints": 255
+ "intelPoints": 255,
+ "perks": [
+ {
+ "name": "Max Stamina Increase",
+ "cost": "25 Spice Melange",
+ "description": "Increased maximum stamina.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxstamina_d.webp"
+ }
+ ]
},
{
"level": 67,
@@ -412,7 +648,16 @@
"level": 68,
"xpRequired": 612,
"totalXp": 24220,
- "intelPoints": 253
+ "intelPoints": 253,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "25 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 69,
@@ -430,7 +675,16 @@
"level": 71,
"xpRequired": 624,
"totalXp": 26086,
- "intelPoints": 251
+ "intelPoints": 251,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "25 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 72,
@@ -448,13 +702,31 @@
"level": 74,
"xpRequired": 624,
"totalXp": 27958,
- "intelPoints": 251
+ "intelPoints": 251,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "25 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 75,
"xpRequired": 624,
"totalXp": 28582,
- "intelPoints": 30
+ "intelPoints": 30,
+ "perks": [
+ {
+ "name": "Combatant's Helm Variant",
+ "cost": "30 Spice Melange",
+ "description": "Headgear for those who practice one of the oldest professions. Those who live by the weapon often die by the weapon, but they will never be lacking in work in the time that they have.\n\nUsed to customize helmets.",
+ "bonus": "Unlocks cosmetic reward",
+ "icon": "t_ui_iconspecialization_reward_combamalehelmet01_d.webp"
+ }
+ ]
},
{
"level": 76,
@@ -466,7 +738,15 @@
"level": 77,
"xpRequired": 624,
"totalXp": 29830,
- "intelPoints": 3025
+ "intelPoints": 3025,
+ "perks": [
+ {
+ "name": "Max Health Increase",
+ "cost": "30 Spice Melange",
+ "description": "Increased maximum health.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxhealth_d.webp"
+ }
+ ]
},
{
"level": 78,
@@ -478,7 +758,16 @@
"level": 79,
"xpRequired": 624,
"totalXp": 31078,
- "intelPoints": 303
+ "intelPoints": 303,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "30 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 80,
@@ -496,7 +785,16 @@
"level": 82,
"xpRequired": 624,
"totalXp": 32950,
- "intelPoints": 301
+ "intelPoints": 301,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "30 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 83,
@@ -514,7 +812,16 @@
"level": 85,
"xpRequired": 624,
"totalXp": 34822,
- "intelPoints": 301
+ "intelPoints": 301,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "30 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 86,
@@ -538,7 +845,16 @@
"level": 89,
"xpRequired": 624,
"totalXp": 37318,
- "intelPoints": 353
+ "intelPoints": 353,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "35 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+3 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints3_d.webp"
+ }
+ ]
},
{
"level": 90,
@@ -550,7 +866,15 @@
"level": 91,
"xpRequired": 624,
"totalXp": 38566,
- "intelPoints": 355
+ "intelPoints": 355,
+ "perks": [
+ {
+ "name": "Max Health Increase",
+ "cost": "35 Spice Melange",
+ "description": "Increased maximum health.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxhealth_d.webp"
+ }
+ ]
},
{
"level": 92,
@@ -562,7 +886,16 @@
"level": 93,
"xpRequired": 624,
"totalXp": 39814,
- "intelPoints": 351
+ "intelPoints": 351,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "35 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 94,
@@ -574,7 +907,15 @@
"level": 95,
"xpRequired": 624,
"totalXp": 41062,
- "intelPoints": 3520
+ "intelPoints": 3520,
+ "perks": [
+ {
+ "name": "Max Stamina Increase",
+ "cost": "35 Spice Melange",
+ "description": "Increased maximum stamina.",
+ "icon": "t_ui_iconspecialization_keystonemajor_combamaxstamina_d.webp"
+ }
+ ]
},
{
"level": 96,
@@ -586,7 +927,16 @@
"level": 97,
"xpRequired": 624,
"totalXp": 42310,
- "intelPoints": 351
+ "intelPoints": 351,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "35 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+1 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints1_d.webp"
+ }
+ ]
},
{
"level": 98,
@@ -604,7 +954,16 @@
"level": 100,
"xpRequired": 624,
"totalXp": 44182,
- "intelPoints": 405
+ "intelPoints": 405,
+ "perks": [
+ {
+ "name": "Skill Points",
+ "cost": "40 Spice Melange",
+ "description": "Gain an additional skill point.",
+ "effect": "+5 Skill Points",
+ "icon": "t_ui_iconspecialization_keystonemajor_combaskillpoints5_d.webp"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/character-builder/data/spec-crafting.json b/character-builder/data/spec-crafting.json
index c407e85..a148de8 100644
--- a/character-builder/data/spec-crafting.json
+++ b/character-builder/data/spec-crafting.json
@@ -10,7 +10,14 @@
"level": 1,
"xpRequired": 100,
"totalXp": 100,
- "intelPoints": 1
+ "intelPoints": 1,
+ "perks": [
+ {
+ "name": "Ranged Augmentation Limit",
+ "description": "Allows additional augments to be slotted onto ranged weapons.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsranged_d.webp"
+ }
+ ]
},
{
"level": 2,
@@ -22,7 +29,15 @@
"level": 3,
"xpRequired": 110,
"totalXp": 315,
- "intelPoints": 21
+ "intelPoints": 21,
+ "perks": [
+ {
+ "name": "Melee Augmentation Limit",
+ "cost": "2 Spice Melange",
+ "description": "Allows additional augments to be slotted onto melee weapons.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsmelee_d.webp"
+ }
+ ]
},
{
"level": 4,
@@ -34,7 +49,15 @@
"level": 5,
"xpRequired": 122,
"totalXp": 553,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Repair Master",
+ "cost": "2 Spice Melange",
+ "description": "Reduces the maximum durability cost of each repair on all types of items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_repairmaxdurability_d.webp"
+ }
+ ]
},
{
"level": 6,
@@ -52,7 +75,15 @@
"level": 8,
"xpRequired": 142,
"totalXp": 958,
- "intelPoints": 2250
+ "intelPoints": 2250,
+ "perks": [
+ {
+ "name": "Consumable Batch Crafting",
+ "cost": "2 Spice Melange",
+ "description": "When crafting consumable objects such as healkits, ammo, and spice consumables, there is a chance to produce twice as many.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_consumablebatchcraftingbonus_d.webp"
+ }
+ ]
},
{
"level": 9,
@@ -64,7 +95,15 @@
"level": 10,
"xpRequired": 157,
"totalXp": 1264,
- "intelPoints": 21
+ "intelPoints": 21,
+ "perks": [
+ {
+ "name": "Garment Augmentation Limit",
+ "cost": "2 Spice Melange",
+ "description": "Allows additional augments to be slotted onto armors.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsarmor_d.webp"
+ }
+ ]
},
{
"level": 11,
@@ -76,7 +115,15 @@
"level": 12,
"xpRequired": 171,
"totalXp": 1599,
- "intelPoints": 5100
+ "intelPoints": 5100,
+ "perks": [
+ {
+ "name": "Superior Spice Yield",
+ "cost": "5 Spice Melange",
+ "description": "A chance to get extra resources from refining orders in the Spice Refineries.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_spicerefiningyields_d.webp"
+ }
+ ]
},
{
"level": 13,
@@ -88,7 +135,15 @@
"level": 14,
"xpRequired": 186,
"totalXp": 1963,
- "intelPoints": 5333
+ "intelPoints": 5333,
+ "perks": [
+ {
+ "name": "Recycling Yield",
+ "cost": "5 Spice Melange",
+ "description": "Recycling yields more resources.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_recycleyield_d.webp"
+ }
+ ]
},
{
"level": 15,
@@ -100,7 +155,15 @@
"level": 16,
"xpRequired": 202,
"totalXp": 2359,
- "intelPoints": 550
+ "intelPoints": 550,
+ "perks": [
+ {
+ "name": "Recycling Jackpot",
+ "cost": "5 Spice Melange",
+ "description": "When recycling, you may obtain rare additional items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_recyclejackpot_d.webp"
+ }
+ ]
},
{
"level": 17,
@@ -112,7 +175,15 @@
"level": 18,
"xpRequired": 220,
"totalXp": 2790,
- "intelPoints": 5
+ "intelPoints": 5,
+ "perks": [
+ {
+ "name": "Efficient Machinery",
+ "cost": "5 Spice Melange",
+ "description": "Increases the speed of all crafting and refining.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_craftingrefiningspeed_d.webp"
+ }
+ ]
},
{
"level": 19,
@@ -124,7 +195,15 @@
"level": 20,
"xpRequired": 239,
"totalXp": 3258,
- "intelPoints": 550
+ "intelPoints": 550,
+ "perks": [
+ {
+ "name": "Augment Fabrication Mastery",
+ "cost": "5 Spice Melange",
+ "description": "Increases the chance for better stats when crafting augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_craftingjackpot_d.webp"
+ }
+ ]
},
{
"level": 21,
@@ -136,7 +215,15 @@
"level": 22,
"xpRequired": 253,
"totalXp": 3757,
- "intelPoints": 10300
+ "intelPoints": 10300,
+ "perks": [
+ {
+ "name": "Superior Chemical Yield",
+ "cost": "10 Spice Melange",
+ "description": "A chance to get extra resources from refining orders in the Chemical Refineries.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_chemicalrefiningyields_d.webp"
+ }
+ ]
},
{
"level": 23,
@@ -154,7 +241,15 @@
"level": 25,
"xpRequired": 276,
"totalXp": 4561,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Augment Cost Reduction",
+ "cost": "10 Spice Melange",
+ "description": "Decreases the crafting cost for augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_recipedecreaseupgradeitems_d.webp"
+ }
+ ]
},
{
"level": 26,
@@ -172,7 +267,15 @@
"level": 28,
"xpRequired": 301,
"totalXp": 5438,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Repair Master",
+ "cost": "10 Spice Melange",
+ "description": "Reduces the maximum durability cost of each repair on all types of items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_repairmaxdurability_d.webp"
+ }
+ ]
},
{
"level": 29,
@@ -184,13 +287,29 @@
"level": 30,
"xpRequired": 319,
"totalXp": 6067,
- "intelPoints": 101
+ "intelPoints": 101,
+ "perks": [
+ {
+ "name": "Melee Augmentation Limit",
+ "cost": "10 Spice Melange",
+ "description": "Allows additional augments to be slotted onto melee weapons.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsmelee_d.webp"
+ }
+ ]
},
{
"level": 31,
"xpRequired": 326,
"totalXp": 6393,
- "intelPoints": 101
+ "intelPoints": 101,
+ "perks": [
+ {
+ "name": "Ranged Augmentation Limit",
+ "cost": "10 Spice Melange",
+ "description": "Allows additional augments to be slotted onto ranged weapons.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsranged_d.webp"
+ }
+ ]
},
{
"level": 32,
@@ -202,7 +321,15 @@
"level": 33,
"xpRequired": 342,
"totalXp": 7069,
- "intelPoints": 1525
+ "intelPoints": 1525,
+ "perks": [
+ {
+ "name": "Augment Fabrication Mastery",
+ "cost": "15 Spice Melange",
+ "description": "Increases the chance for better stats when crafting augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_craftingjackpot_d.webp"
+ }
+ ]
},
{
"level": 34,
@@ -214,7 +341,15 @@
"level": 35,
"xpRequired": 358,
"totalXp": 7777,
- "intelPoints": 1550
+ "intelPoints": 1550,
+ "perks": [
+ {
+ "name": "Recycling Jackpot",
+ "cost": "15 Spice Melange",
+ "description": "When recycling, you may obtain rare additional items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_recyclejackpot_d.webp"
+ }
+ ]
},
{
"level": 36,
@@ -232,7 +367,15 @@
"level": 38,
"xpRequired": 384,
"totalXp": 8902,
- "intelPoints": 15
+ "intelPoints": 15,
+ "perks": [
+ {
+ "name": "Efficient Machinery",
+ "cost": "15 Spice Melange",
+ "description": "Increases the speed of all crafting and refining.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_craftingrefiningspeed_d.webp"
+ }
+ ]
},
{
"level": 39,
@@ -244,7 +387,15 @@
"level": 40,
"xpRequired": 402,
"totalXp": 9697,
- "intelPoints": 15333
+ "intelPoints": 15333,
+ "perks": [
+ {
+ "name": "Recycling Yield",
+ "cost": "15 Spice Melange",
+ "description": "Recycling yields more resources.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_recycleyield_d.webp"
+ }
+ ]
},
{
"level": 41,
@@ -256,7 +407,15 @@
"level": 42,
"xpRequired": 418,
"totalXp": 10525,
- "intelPoints": 151
+ "intelPoints": 151,
+ "perks": [
+ {
+ "name": "Garment Augmentation Limit",
+ "cost": "15 Spice Melange",
+ "description": "Allows additional augments to be slotted onto armors.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsarmor_d.webp"
+ }
+ ]
},
{
"level": 43,
@@ -274,7 +433,15 @@
"level": 45,
"xpRequired": 442,
"totalXp": 11827,
- "intelPoints": 20100
+ "intelPoints": 20100,
+ "perks": [
+ {
+ "name": "Superior Spice Yield",
+ "cost": "20 Spice Melange",
+ "description": "A chance to get extra resources from refining orders in the Spice Refineries.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_spicerefiningyields_d.webp"
+ }
+ ]
},
{
"level": 46,
@@ -292,7 +459,15 @@
"level": 48,
"xpRequired": 468,
"totalXp": 13204,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Repair Master",
+ "cost": "20 Spice Melange",
+ "description": "Reduces the maximum durability cost of each repair on all types of items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_repairmaxdurability_d.webp"
+ }
+ ]
},
{
"level": 49,
@@ -316,7 +491,15 @@
"level": 52,
"xpRequired": 502,
"totalXp": 15163,
- "intelPoints": 20
+ "intelPoints": 20,
+ "perks": [
+ {
+ "name": "Pattern Upgrading",
+ "cost": "20 Spice Melange",
+ "description": "Unlocks a recipe in the Advanced Survival Fabricator which combines lower quality Schematic Patterns to create higher quality patterns.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_upgradingfragmentsability_d.webp"
+ }
+ ]
},
{
"level": 53,
@@ -334,7 +517,15 @@
"level": 55,
"xpRequired": 526,
"totalXp": 16717,
- "intelPoints": 2025
+ "intelPoints": 2025,
+ "perks": [
+ {
+ "name": "Augment Fabrication Mastery",
+ "cost": "20 Spice Melange",
+ "description": "Increases the chance for better stats when crafting augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_craftingjackpot_d.webp"
+ }
+ ]
},
{
"level": 56,
@@ -358,7 +549,15 @@
"level": 59,
"xpRequired": 561,
"totalXp": 18907,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Augment Cost Reduction",
+ "cost": "20 Spice Melange",
+ "description": "Decreases the crafting cost for augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_recipedecreaseupgradeitems_d.webp"
+ }
+ ]
},
{
"level": 60,
@@ -370,7 +569,15 @@
"level": 61,
"xpRequired": 575,
"totalXp": 20052,
- "intelPoints": 25150
+ "intelPoints": 25150,
+ "perks": [
+ {
+ "name": "Waste Not, Want Not",
+ "cost": "25 Spice Melange",
+ "description": "When recycling a unique item, you have a chance to recover the schematic used to fabricate that item.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_schematicswhenrecycle_d.webp"
+ }
+ ]
},
{
"level": 62,
@@ -382,7 +589,15 @@
"level": 63,
"xpRequired": 585,
"totalXp": 21217,
- "intelPoints": 25300
+ "intelPoints": 25300,
+ "perks": [
+ {
+ "name": "Superior Ore Yield",
+ "cost": "25 Spice Melange",
+ "description": "A chance to get extra resources from refining orders in the Ore Refineries.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_refiningyields_d.webp"
+ }
+ ]
},
{
"level": 64,
@@ -400,7 +615,15 @@
"level": 66,
"xpRequired": 600,
"totalXp": 23002,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Repair Master",
+ "cost": "25 Spice Melange",
+ "description": "Reduces the maximum durability cost of each repair on all types of items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_repairmaxdurability_d.webp"
+ }
+ ]
},
{
"level": 67,
@@ -418,7 +641,15 @@
"level": 69,
"xpRequired": 618,
"totalXp": 24838,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Recycling Jackpot",
+ "cost": "25 Spice Melange",
+ "description": "When recycling, you may obtain rare additional items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_recyclejackpot_d.webp"
+ }
+ ]
},
{
"level": 70,
@@ -436,7 +667,15 @@
"level": 72,
"xpRequired": 624,
"totalXp": 26710,
- "intelPoints": 25
+ "intelPoints": 25,
+ "perks": [
+ {
+ "name": "Efficient Machinery",
+ "cost": "25 Spice Melange",
+ "description": "Increases the speed of all crafting and refining.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_craftingrefiningspeed_d.webp"
+ }
+ ]
},
{
"level": 73,
@@ -454,7 +693,16 @@
"level": 75,
"xpRequired": 624,
"totalXp": 28582,
- "intelPoints": 30
+ "intelPoints": 30,
+ "perks": [
+ {
+ "name": "Crafter\u2019s Helm Variant",
+ "cost": "30 Spice Melange",
+ "description": "Headgear commemorating those who craft, create, and build. Such artisans shape the world around them by the sheer force of their artifice. \n\nUsed to customize helmets.",
+ "bonus": "Unlocks cosmetic reward",
+ "icon": "t_ui_iconspecialization_reward_crafting_malehelmet01_d.webp"
+ }
+ ]
},
{
"level": 76,
@@ -472,7 +720,15 @@
"level": 78,
"xpRequired": 624,
"totalXp": 30454,
- "intelPoints": 3050
+ "intelPoints": 3050,
+ "perks": [
+ {
+ "name": "Augment Fabrication Mastery",
+ "cost": "30 Spice Melange",
+ "description": "Increases the chance for better stats when crafting augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_craftingjackpot_d.webp"
+ }
+ ]
},
{
"level": 79,
@@ -484,7 +740,15 @@
"level": 80,
"xpRequired": 624,
"totalXp": 31702,
- "intelPoints": 30333
+ "intelPoints": 30333,
+ "perks": [
+ {
+ "name": "Recycling Yield",
+ "cost": "30 Spice Melange",
+ "description": "Recycling yields more resources.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_recycleyield_d.webp"
+ }
+ ]
},
{
"level": 81,
@@ -502,7 +766,15 @@
"level": 83,
"xpRequired": 624,
"totalXp": 33574,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Repair Master",
+ "cost": "30 Spice Melange",
+ "description": "Reduces the maximum durability cost of each repair on all types of items.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_repairmaxdurability_d.webp"
+ }
+ ]
},
{
"level": 84,
@@ -514,7 +786,15 @@
"level": 85,
"xpRequired": 624,
"totalXp": 34822,
- "intelPoints": 30100
+ "intelPoints": 30100,
+ "perks": [
+ {
+ "name": "Superior Spice Yield",
+ "cost": "30 Spice Melange",
+ "description": "A chance to get extra resources from refining orders in the Spice Refineries.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_spicerefiningyields_d.webp"
+ }
+ ]
},
{
"level": 86,
@@ -526,13 +806,29 @@
"level": 87,
"xpRequired": 624,
"totalXp": 36070,
- "intelPoints": 351
+ "intelPoints": 351,
+ "perks": [
+ {
+ "name": "Ranged Augmentation Limit",
+ "cost": "35 Spice Melange",
+ "description": "Allows additional augments to be slotted onto ranged weapons.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsranged_d.webp"
+ }
+ ]
},
{
"level": 88,
"xpRequired": 624,
"totalXp": 36694,
- "intelPoints": 351
+ "intelPoints": 351,
+ "perks": [
+ {
+ "name": "Melee Augmentation Limit",
+ "cost": "35 Spice Melange",
+ "description": "Allows additional augments to be slotted onto melee weapons.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_augmentslotsmelee_d.webp"
+ }
+ ]
},
{
"level": 89,
@@ -544,7 +840,15 @@
"level": 90,
"xpRequired": 624,
"totalXp": 37942,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Augment Cost Reduction",
+ "cost": "35 Spice Melange",
+ "description": "Decreases the crafting cost for augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_recipedecreaseupgradeitems_d.webp"
+ }
+ ]
},
{
"level": 91,
@@ -562,7 +866,15 @@
"level": 93,
"xpRequired": 624,
"totalXp": 39814,
- "intelPoints": 35
+ "intelPoints": 35,
+ "perks": [
+ {
+ "name": "Efficient Machinery",
+ "cost": "35 Spice Melange",
+ "description": "Increases the speed of all crafting and refining.",
+ "icon": "t_ui_iconspecialization_keystoneminor_crafting_craftingrefiningspeed_d.webp"
+ }
+ ]
},
{
"level": 94,
@@ -580,7 +892,15 @@
"level": 96,
"xpRequired": 624,
"totalXp": 41686,
- "intelPoints": 3550
+ "intelPoints": 3550,
+ "perks": [
+ {
+ "name": "Augment Fabrication Mastery",
+ "cost": "35 Spice Melange",
+ "description": "Increases the chance for better stats when crafting augments.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_craftingjackpot_d.webp"
+ }
+ ]
},
{
"level": 97,
@@ -604,7 +924,15 @@
"level": 100,
"xpRequired": 624,
"totalXp": 44182,
- "intelPoints": 40150
+ "intelPoints": 40150,
+ "perks": [
+ {
+ "name": "Ghost Data",
+ "cost": "40 Spice Melange",
+ "description": "Chance to gain twice as many permits when learning a schematic.",
+ "icon": "t_ui_iconspecialization_keystonemajor_crafting_ghostdataability_d.webp"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/character-builder/data/spec-exploration.json b/character-builder/data/spec-exploration.json
index 66c635b..52f64ae 100644
--- a/character-builder/data/spec-exploration.json
+++ b/character-builder/data/spec-exploration.json
@@ -10,7 +10,15 @@
"level": 1,
"xpRequired": 100,
"totalXp": 100,
- "intelPoints": 215
+ "intelPoints": 215,
+ "perks": [
+ {
+ "name": "Pack Mule",
+ "cost": "2 Spice Melange",
+ "description": "Increases inventory size by 1 row.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_playerinventoryslots_d.webp"
+ }
+ ]
},
{
"level": 2,
@@ -22,7 +30,15 @@
"level": 3,
"xpRequired": 110,
"totalXp": 315,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Boost Heat Reduction",
+ "cost": "2 Spice Melange",
+ "description": "Reduced heat buildup when using vehicle boosts.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehicleboostheatreduction_d.webp"
+ }
+ ]
},
{
"level": 4,
@@ -40,7 +56,15 @@
"level": 6,
"xpRequired": 128,
"totalXp": 681,
- "intelPoints": 250
+ "intelPoints": 250,
+ "perks": [
+ {
+ "name": "Superior Fuel Efficiency",
+ "cost": "2 Spice Melange",
+ "description": "Reduced fuel consumption when piloting vehicles.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehiclefuelefficiency_d.webp"
+ }
+ ]
},
{
"level": 7,
@@ -52,7 +76,15 @@
"level": 8,
"xpRequired": 142,
"totalXp": 958,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Rider in the Storm",
+ "cost": "2 Spice Melange",
+ "description": "Reduced vehicle damage taken from sandstorms.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_sandstormdamagereduction_d.webp"
+ }
+ ]
},
{
"level": 9,
@@ -64,7 +96,15 @@
"level": 10,
"xpRequired": 157,
"totalXp": 1264,
- "intelPoints": 2
+ "intelPoints": 2,
+ "perks": [
+ {
+ "name": "Treasure Hunter",
+ "cost": "2 Spice Melange",
+ "description": "Increases the amount of loot gained from crashed ships and buried treasures.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_buriedtreasurebonus_d.webp"
+ }
+ ]
},
{
"level": 11,
@@ -82,7 +122,15 @@
"level": 13,
"xpRequired": 178,
"totalXp": 1777,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Efficient Surveyor",
+ "cost": "5 Spice Melange",
+ "description": "Time required to successfully survey with the survey probe is reduced.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_surveyingtimedecrease_d.webp"
+ }
+ ]
},
{
"level": 14,
@@ -94,7 +142,15 @@
"level": 15,
"xpRequired": 194,
"totalXp": 2157,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Boost Heat Reduction",
+ "cost": "5 Spice Melange",
+ "description": "Reduced heat buildup when using vehicle boosts.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehicleboostheatreduction_d.webp"
+ }
+ ]
},
{
"level": 16,
@@ -106,13 +162,29 @@
"level": 17,
"xpRequired": 211,
"totalXp": 2570,
- "intelPoints": 5150
+ "intelPoints": 5150,
+ "perks": [
+ {
+ "name": "Superior Scanning Range",
+ "cost": "5 Spice Melange",
+ "description": "Increased range with scanners.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_scanningrange_d.webp"
+ }
+ ]
},
{
"level": 18,
"xpRequired": 220,
"totalXp": 2790,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Recovery Cost Reduction",
+ "cost": "5 Spice Melange",
+ "description": "Reduces the cost of Vehicle Recovery.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_reducecostvehiclerecovery_d.webp"
+ }
+ ]
},
{
"level": 19,
@@ -124,7 +196,15 @@
"level": 20,
"xpRequired": 239,
"totalXp": 3258,
- "intelPoints": 5150
+ "intelPoints": 5150,
+ "perks": [
+ {
+ "name": "Vehicle Speed Bonus",
+ "cost": "5 Spice Melange",
+ "description": "Increased maximum travel speed when piloting vehicles.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehiclespeedbonus_d.webp"
+ }
+ ]
},
{
"level": 21,
@@ -142,7 +222,15 @@
"level": 23,
"xpRequired": 260,
"totalXp": 4017,
- "intelPoints": 1050
+ "intelPoints": 1050,
+ "perks": [
+ {
+ "name": "Superior Heat Dissipation",
+ "cost": "10 Spice Melange",
+ "description": "Vehicles dissipate heat more rapidly.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fastervehicleheat_d.webp"
+ }
+ ]
},
{
"level": 24,
@@ -154,7 +242,15 @@
"level": 25,
"xpRequired": 276,
"totalXp": 4561,
- "intelPoints": 1015
+ "intelPoints": 1015,
+ "perks": [
+ {
+ "name": "Pack Mule",
+ "cost": "10 Spice Melange",
+ "description": "Increases inventory size by 1 row.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_playerinventoryslots_d.webp"
+ }
+ ]
},
{
"level": 26,
@@ -172,7 +268,15 @@
"level": 28,
"xpRequired": 301,
"totalXp": 5438,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Suspensor Powerdrain Reduction",
+ "cost": "10 Spice Melange",
+ "description": "Reduced power drain from suspensor belts.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_suspensorpowerdrain_d.webp"
+ }
+ ]
},
{
"level": 29,
@@ -184,7 +288,15 @@
"level": 30,
"xpRequired": 319,
"totalXp": 6067,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Boost Heat Reduction",
+ "cost": "10 Spice Melange",
+ "description": "Reduced heat buildup when using vehicle boosts.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehicleboostheatreduction_d.webp"
+ }
+ ]
},
{
"level": 31,
@@ -202,7 +314,15 @@
"level": 33,
"xpRequired": 342,
"totalXp": 7069,
- "intelPoints": 10100
+ "intelPoints": 10100,
+ "perks": [
+ {
+ "name": "Expert Maneuvering",
+ "cost": "10 Spice Melange",
+ "description": "Your piloting skill enables you to reduce the damage taken when piloting a vehicle.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_vehicledamageresistance_d.webp"
+ }
+ ]
},
{
"level": 34,
@@ -214,7 +334,15 @@
"level": 35,
"xpRequired": 358,
"totalXp": 7777,
- "intelPoints": 1550
+ "intelPoints": 1550,
+ "perks": [
+ {
+ "name": "Superior Fuel Efficiency",
+ "cost": "15 Spice Melange",
+ "description": "Reduced fuel consumption when piloting vehicles.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehiclefuelefficiency_d.webp"
+ }
+ ]
},
{
"level": 36,
@@ -232,7 +360,15 @@
"level": 38,
"xpRequired": 384,
"totalXp": 8902,
- "intelPoints": 15500
+ "intelPoints": 15500,
+ "perks": [
+ {
+ "name": "Revealing the Fog",
+ "cost": "15 Spice Melange",
+ "description": "Reveal a larger area of the fog of war when traversing across the map.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fogwarrevealradius_d.webp"
+ }
+ ]
},
{
"level": 39,
@@ -244,7 +380,15 @@
"level": 40,
"xpRequired": 402,
"totalXp": 9697,
- "intelPoints": 15
+ "intelPoints": 15,
+ "perks": [
+ {
+ "name": "Hidden Caches",
+ "cost": "15 Spice Melange",
+ "description": "Increases amount of loot in loot containers.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_lootpoolalterations_d.webp"
+ }
+ ]
},
{
"level": 41,
@@ -256,7 +400,15 @@
"level": 42,
"xpRequired": 418,
"totalXp": 10525,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Wall Crawler",
+ "cost": "15 Spice Melange",
+ "description": "Reduced stamina drain when climbing.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_climbingstamina_d.webp"
+ }
+ ]
},
{
"level": 43,
@@ -274,7 +426,15 @@
"level": 45,
"xpRequired": 442,
"totalXp": 11827,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Rider in the Storm",
+ "cost": "15 Spice Melange",
+ "description": "Reduced vehicle damage taken from sandstorms.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_sandstormdamagereduction_d.webp"
+ }
+ ]
},
{
"level": 46,
@@ -292,7 +452,15 @@
"level": 48,
"xpRequired": 468,
"totalXp": 13204,
- "intelPoints": 2050
+ "intelPoints": 2050,
+ "perks": [
+ {
+ "name": "Superior Heat Dissipation",
+ "cost": "20 Spice Melange",
+ "description": "Vehicles dissipate heat more rapidly.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fastervehicleheat_d.webp"
+ }
+ ]
},
{
"level": 49,
@@ -304,7 +472,15 @@
"level": 50,
"xpRequired": 486,
"totalXp": 14167,
- "intelPoints": 2015
+ "intelPoints": 2015,
+ "perks": [
+ {
+ "name": "Pack Mule",
+ "cost": "20 Spice Melange",
+ "description": "Increases inventory size by 1 row.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_playerinventoryslots_d.webp"
+ }
+ ]
},
{
"level": 51,
@@ -316,7 +492,15 @@
"level": 52,
"xpRequired": 502,
"totalXp": 15163,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Recovery Cost Reduction",
+ "cost": "20 Spice Melange",
+ "description": "Reduces the cost of Vehicle Recovery.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_reducecostvehiclerecovery_d.webp"
+ }
+ ]
},
{
"level": 53,
@@ -334,7 +518,15 @@
"level": 55,
"xpRequired": 526,
"totalXp": 16717,
- "intelPoints": 2050
+ "intelPoints": 2050,
+ "perks": [
+ {
+ "name": "Superior Fuel Efficiency",
+ "cost": "20 Spice Melange",
+ "description": "Reduced fuel consumption when piloting vehicles.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehiclefuelefficiency_d.webp"
+ }
+ ]
},
{
"level": 56,
@@ -358,7 +550,15 @@
"level": 59,
"xpRequired": 561,
"totalXp": 18907,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Boost Heat Reduction",
+ "cost": "20 Spice Melange",
+ "description": "Reduced heat buildup when using vehicle boosts.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehicleboostheatreduction_d.webp"
+ }
+ ]
},
{
"level": 60,
@@ -376,7 +576,15 @@
"level": 62,
"xpRequired": 580,
"totalXp": 20632,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Superior Heat Dissipation",
+ "cost": "25 Spice Melange",
+ "description": "Vehicles dissipate heat more rapidly.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fastervehicleheat_d.webp"
+ }
+ ]
},
{
"level": 63,
@@ -394,7 +602,15 @@
"level": 65,
"xpRequired": 595,
"totalXp": 22402,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Superior Fuel Efficiency",
+ "cost": "25 Spice Melange",
+ "description": "Reduced fuel consumption when piloting vehicles.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehiclefuelefficiency_d.webp"
+ }
+ ]
},
{
"level": 66,
@@ -412,7 +628,15 @@
"level": 68,
"xpRequired": 612,
"totalXp": 24220,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Superior Heat Dissipation",
+ "cost": "25 Spice Melange",
+ "description": "Vehicles dissipate heat more rapidly.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fastervehicleheat_d.webp"
+ }
+ ]
},
{
"level": 69,
@@ -430,7 +654,15 @@
"level": 71,
"xpRequired": 624,
"totalXp": 26086,
- "intelPoints": 25350
+ "intelPoints": 25350,
+ "perks": [
+ {
+ "name": "Superior Scanning Range",
+ "cost": "25 Spice Melange",
+ "description": "Increased range with scanners.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_scanningrange_d.webp"
+ }
+ ]
},
{
"level": 72,
@@ -448,13 +680,30 @@
"level": 74,
"xpRequired": 624,
"totalXp": 27958,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Without Rhythm",
+ "cost": "25 Spice Melange",
+ "description": "Reduced worm threat from moving across the sand.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_lesswormthreat_d.webp"
+ }
+ ]
},
{
"level": 75,
"xpRequired": 624,
"totalXp": 28582,
- "intelPoints": 30
+ "intelPoints": 30,
+ "perks": [
+ {
+ "name": "Explorer\u2019s Helm Variant",
+ "cost": "30 Spice Melange",
+ "description": "Headgear celebrating those who excel at discovery. That illimitable curiosity, stronger than the fear of death, has brought humanity across vast swaths of the universe, further than their biology had any right to take them.\n\nUsed to customize helmets.",
+ "bonus": "Unlocks cosmetic reward",
+ "icon": "t_ui_iconspecialization_reward_exploration_malehelmet01_d.webp"
+ }
+ ]
},
{
"level": 76,
@@ -466,7 +715,15 @@
"level": 77,
"xpRequired": 624,
"totalXp": 29830,
- "intelPoints": 3015
+ "intelPoints": 3015,
+ "perks": [
+ {
+ "name": "Pack Mule",
+ "cost": "30 Spice Melange",
+ "description": "Increases inventory size by 1 row.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_playerinventoryslots_d.webp"
+ }
+ ]
},
{
"level": 78,
@@ -484,7 +741,15 @@
"level": 80,
"xpRequired": 624,
"totalXp": 31702,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Rider in the Storm",
+ "cost": "30 Spice Melange",
+ "description": "Reduced vehicle damage taken from sandstorms.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_sandstormdamagereduction_d.webp"
+ }
+ ]
},
{
"level": 81,
@@ -502,7 +767,15 @@
"level": 83,
"xpRequired": 624,
"totalXp": 33574,
- "intelPoints": 3050
+ "intelPoints": 3050,
+ "perks": [
+ {
+ "name": "Superior Heat Dissipation",
+ "cost": "30 Spice Melange",
+ "description": "Vehicles dissipate heat more rapidly.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fastervehicleheat_d.webp"
+ }
+ ]
},
{
"level": 84,
@@ -514,7 +787,15 @@
"level": 85,
"xpRequired": 624,
"totalXp": 34822,
- "intelPoints": 3050
+ "intelPoints": 3050,
+ "perks": [
+ {
+ "name": "Superior Fuel Efficiency",
+ "cost": "30 Spice Melange",
+ "description": "Reduced fuel consumption when piloting vehicles.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehiclefuelefficiency_d.webp"
+ }
+ ]
},
{
"level": 86,
@@ -532,7 +813,15 @@
"level": 88,
"xpRequired": 624,
"totalXp": 36694,
- "intelPoints": 35100
+ "intelPoints": 35100,
+ "perks": [
+ {
+ "name": "Expert Maneuvering",
+ "cost": "35 Spice Melange",
+ "description": "Your piloting skill enables you to reduce the damage taken when piloting a vehicle.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_vehicledamageresistance_d.webp"
+ }
+ ]
},
{
"level": 89,
@@ -544,7 +833,15 @@
"level": 90,
"xpRequired": 624,
"totalXp": 37942,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Vehicle Boost Heat Reduction",
+ "cost": "35 Spice Melange",
+ "description": "Reduced heat buildup when using vehicle boosts.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_vehicleboostheatreduction_d.webp"
+ }
+ ]
},
{
"level": 91,
@@ -562,7 +859,15 @@
"level": 93,
"xpRequired": 624,
"totalXp": 39814,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Suspensor Powerdrain Reduction",
+ "cost": "35 Spice Melange",
+ "description": "Reduced power drain from suspensor belts.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_suspensorpowerdrain_d.webp"
+ }
+ ]
},
{
"level": 94,
@@ -574,7 +879,15 @@
"level": 95,
"xpRequired": 624,
"totalXp": 41062,
- "intelPoints": 3550
+ "intelPoints": 3550,
+ "perks": [
+ {
+ "name": "Superior Heat Dissipation",
+ "cost": "35 Spice Melange",
+ "description": "Vehicles dissipate heat more rapidly.",
+ "icon": "t_ui_iconspecialization_keystoneminor_exploration_fastervehicleheat_d.webp"
+ }
+ ]
},
{
"level": 96,
@@ -592,7 +905,15 @@
"level": 98,
"xpRequired": 624,
"totalXp": 42934,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Without Rhythm",
+ "cost": "35 Spice Melange",
+ "description": "Reduced worm threat from moving across the sand.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_lesswormthreat_d.webp"
+ }
+ ]
},
{
"level": 99,
@@ -604,7 +925,15 @@
"level": 100,
"xpRequired": 624,
"totalXp": 44182,
- "intelPoints": 4015
+ "intelPoints": 4015,
+ "perks": [
+ {
+ "name": "Pack Mule",
+ "cost": "40 Spice Melange",
+ "description": "Increases inventory size by 1 row.",
+ "icon": "t_ui_iconspecialization_keystonemajor_exploration_playerinventoryslots_d.webp"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/character-builder/data/spec-gathering.json b/character-builder/data/spec-gathering.json
index 8dae2db..d213de6 100644
--- a/character-builder/data/spec-gathering.json
+++ b/character-builder/data/spec-gathering.json
@@ -10,19 +10,43 @@
"level": 1,
"xpRequired": 100,
"totalXp": 100,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Effective Salvaging",
+ "cost": "2 Spice Melange",
+ "description": "Scrap-yielding resource nodes have a chance to yield additional bonus components when mined using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_bonusyieldscrap_d.webp"
+ }
+ ]
},
{
"level": 2,
"xpRequired": 105,
"totalXp": 205,
- "intelPoints": 2200
+ "intelPoints": 2200,
+ "perks": [
+ {
+ "name": "Every Last Drop",
+ "cost": "2 Spice Melange",
+ "description": "Increased water yield when using a dew reaper or scythe.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_additionalwaterplants_d.webp"
+ }
+ ]
},
{
"level": 3,
"xpRequired": 110,
"totalXp": 315,
- "intelPoints": 21000
+ "intelPoints": 21000,
+ "perks": [
+ {
+ "name": "Exsanguination Mastery",
+ "cost": "2 Spice Melange",
+ "description": "Increased blood harvested from corpses.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_additionalbloodcorpses_d.webp"
+ }
+ ]
},
{
"level": 4,
@@ -34,7 +58,15 @@
"level": 5,
"xpRequired": 122,
"totalXp": 553,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "More Efficient Tools",
+ "cost": "2 Spice Melange",
+ "description": "Reduced power consumption from using tools.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_toolusagecostspower_d.webp"
+ }
+ ]
},
{
"level": 6,
@@ -46,13 +78,29 @@
"level": 7,
"xpRequired": 135,
"totalXp": 816,
- "intelPoints": 250
+ "intelPoints": 250,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "2 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 8,
"xpRequired": 142,
"totalXp": 958,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Compactor Safety",
+ "cost": "5 Spice Melange",
+ "description": "Reduced sandworm threat generation when using the static compactor.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_compactorthreatgeneration_d.webp"
+ }
+ ]
},
{
"level": 9,
@@ -64,7 +112,15 @@
"level": 10,
"xpRequired": 157,
"totalXp": 1264,
- "intelPoints": 525
+ "intelPoints": 525,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "5 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 11,
@@ -82,7 +138,15 @@
"level": 13,
"xpRequired": 178,
"totalXp": 1777,
- "intelPoints": 5100
+ "intelPoints": 5100,
+ "perks": [
+ {
+ "name": "Superior Compactor Range",
+ "cost": "5 Spice Melange",
+ "description": "Increases the range for the static compactor.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_compactorgatherrange_d.webp"
+ }
+ ]
},
{
"level": 14,
@@ -94,7 +158,15 @@
"level": 15,
"xpRequired": 194,
"totalXp": 2157,
- "intelPoints": 51000
+ "intelPoints": 51000,
+ "perks": [
+ {
+ "name": "Pickup Yields",
+ "cost": "5 Spice Melange",
+ "description": "Increased amount collected when picking up items like scrap, stone, and ore.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_additionalyieldspickups_d.webp"
+ }
+ ]
},
{
"level": 16,
@@ -106,7 +178,15 @@
"level": 17,
"xpRequired": 211,
"totalXp": 2570,
- "intelPoints": 550
+ "intelPoints": 550,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "5 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 18,
@@ -124,7 +204,15 @@
"level": 20,
"xpRequired": 239,
"totalXp": 3258,
- "intelPoints": 1025
+ "intelPoints": 1025,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "10 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 21,
@@ -142,7 +230,15 @@
"level": 23,
"xpRequired": 260,
"totalXp": 4017,
- "intelPoints": 1050
+ "intelPoints": 1050,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "10 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 24,
@@ -154,7 +250,15 @@
"level": 25,
"xpRequired": 276,
"totalXp": 4561,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Compactor Safety",
+ "cost": "10 Spice Melange",
+ "description": "Reduced sandworm threat generation when using the static compactor.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_compactorthreatgeneration_d.webp"
+ }
+ ]
},
{
"level": 26,
@@ -172,7 +276,15 @@
"level": 28,
"xpRequired": 301,
"totalXp": 5438,
- "intelPoints": 1050
+ "intelPoints": 1050,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "10 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 29,
@@ -184,7 +296,15 @@
"level": 30,
"xpRequired": 319,
"totalXp": 6067,
- "intelPoints": 1025
+ "intelPoints": 1025,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "10 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 31,
@@ -202,7 +322,15 @@
"level": 33,
"xpRequired": 342,
"totalXp": 7069,
- "intelPoints": 15100
+ "intelPoints": 15100,
+ "perks": [
+ {
+ "name": "Superior Compactor Range",
+ "cost": "15 Spice Melange",
+ "description": "Increases the range for the static compactor.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_compactorgatherrange_d.webp"
+ }
+ ]
},
{
"level": 34,
@@ -214,7 +342,15 @@
"level": 35,
"xpRequired": 358,
"totalXp": 7777,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Effective Salvaging",
+ "cost": "15 Spice Melange",
+ "description": "Scrap-yielding resource nodes have a chance to yield additional bonus components when mined using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_bonusyieldscrap_d.webp"
+ }
+ ]
},
{
"level": 36,
@@ -232,7 +368,15 @@
"level": 38,
"xpRequired": 384,
"totalXp": 8902,
- "intelPoints": 1550
+ "intelPoints": 1550,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "15 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 39,
@@ -244,7 +388,15 @@
"level": 40,
"xpRequired": 402,
"totalXp": 9697,
- "intelPoints": 1525
+ "intelPoints": 1525,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "15 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 41,
@@ -262,7 +414,15 @@
"level": 43,
"xpRequired": 426,
"totalXp": 10951,
- "intelPoints": 1550
+ "intelPoints": 1550,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "15 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 44,
@@ -274,7 +434,15 @@
"level": 45,
"xpRequired": 442,
"totalXp": 11827,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "More Efficient Tools",
+ "cost": "20 Spice Melange",
+ "description": "Reduced power consumption from using tools.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_toolusagecostspower_d.webp"
+ }
+ ]
},
{
"level": 46,
@@ -292,7 +460,15 @@
"level": 48,
"xpRequired": 468,
"totalXp": 13204,
- "intelPoints": 2050
+ "intelPoints": 2050,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "20 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 49,
@@ -304,7 +480,15 @@
"level": 50,
"xpRequired": 486,
"totalXp": 14167,
- "intelPoints": 2025
+ "intelPoints": 2025,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "20 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 51,
@@ -322,7 +506,15 @@
"level": 53,
"xpRequired": 510,
"totalXp": 15673,
- "intelPoints": 2050
+ "intelPoints": 2050,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "20 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 54,
@@ -334,7 +526,15 @@
"level": 55,
"xpRequired": 526,
"totalXp": 16717,
- "intelPoints": 201000
+ "intelPoints": 201000,
+ "perks": [
+ {
+ "name": "Pickup Yields",
+ "cost": "20 Spice Melange",
+ "description": "Increased amount collected when picking up items like scrap, stone, and ore.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_additionalyieldspickups_d.webp"
+ }
+ ]
},
{
"level": 56,
@@ -352,7 +552,15 @@
"level": 58,
"xpRequired": 552,
"totalXp": 18346,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Corpse Compression",
+ "cost": "25 Spice Melange",
+ "description": "Corpses occupy less inventory volume.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_jellyfingcorpse_d.webp"
+ }
+ ]
},
{
"level": 59,
@@ -370,7 +578,15 @@
"level": 61,
"xpRequired": 575,
"totalXp": 20052,
- "intelPoints": 2525
+ "intelPoints": 2525,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "25 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 62,
@@ -382,7 +598,15 @@
"level": 63,
"xpRequired": 585,
"totalXp": 21217,
- "intelPoints": 25100
+ "intelPoints": 25100,
+ "perks": [
+ {
+ "name": "Superior Compactor Range",
+ "cost": "25 Spice Melange",
+ "description": "Increases the range for the static compactor.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_compactorgatherrange_d.webp"
+ }
+ ]
},
{
"level": 64,
@@ -394,7 +618,15 @@
"level": 65,
"xpRequired": 595,
"totalXp": 22402,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Compactor Safety",
+ "cost": "25 Spice Melange",
+ "description": "Reduced sandworm threat generation when using the static compactor.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_compactorthreatgeneration_d.webp"
+ }
+ ]
},
{
"level": 66,
@@ -412,7 +644,15 @@
"level": 68,
"xpRequired": 612,
"totalXp": 24220,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "25 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 69,
@@ -430,7 +670,15 @@
"level": 71,
"xpRequired": 624,
"totalXp": 26086,
- "intelPoints": 3025
+ "intelPoints": 3025,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "30 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 72,
@@ -448,13 +696,30 @@
"level": 74,
"xpRequired": 624,
"totalXp": 27958,
- "intelPoints": 30400
+ "intelPoints": 30400,
+ "perks": [
+ {
+ "name": "Superior Compactor Range",
+ "cost": "30 Spice Melange",
+ "description": "Increases the range for the static compactor.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_compactorgatherrange_d.webp"
+ }
+ ]
},
{
"level": 75,
"xpRequired": 624,
"totalXp": 28582,
- "intelPoints": 30
+ "intelPoints": 30,
+ "perks": [
+ {
+ "name": "Gatherer's Helm Variant",
+ "cost": "30 Spice Melange",
+ "description": "Headgear for those who know how to acquire that which is needed. No matter how powerful they are, the most affluent people in the universe cannot escape their dependence on such agents.\n\nUsed to customize helmets.",
+ "bonus": "Unlocks cosmetic reward",
+ "icon": "t_ui_iconspecialization_reward_gathering_malehelmet01_d.webp"
+ }
+ ]
},
{
"level": 76,
@@ -472,7 +737,15 @@
"level": 78,
"xpRequired": 624,
"totalXp": 30454,
- "intelPoints": 30100
+ "intelPoints": 30100,
+ "perks": [
+ {
+ "name": "Superior Compactor Range",
+ "cost": "30 Spice Melange",
+ "description": "Increases the range for the static compactor.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_compactorgatherrange_d.webp"
+ }
+ ]
},
{
"level": 79,
@@ -490,7 +763,15 @@
"level": 81,
"xpRequired": 624,
"totalXp": 32326,
- "intelPoints": 3025
+ "intelPoints": 3025,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "30 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 82,
@@ -502,7 +783,15 @@
"level": 83,
"xpRequired": 624,
"totalXp": 33574,
- "intelPoints": 3550
+ "intelPoints": 3550,
+ "perks": [
+ {
+ "name": "Effective Mining",
+ "cost": "35 Spice Melange",
+ "description": "Adds a chance to gain additional resources from mineral nodes that aren't normally present when mining using analysis mode.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_byproductsalvage_d.webp"
+ }
+ ]
},
{
"level": 84,
@@ -520,7 +809,15 @@
"level": 86,
"xpRequired": 624,
"totalXp": 35446,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Compactor Safety",
+ "cost": "35 Spice Melange",
+ "description": "Reduced sandworm threat generation when using the static compactor.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_compactorthreatgeneration_d.webp"
+ }
+ ]
},
{
"level": 87,
@@ -544,7 +841,15 @@
"level": 90,
"xpRequired": 624,
"totalXp": 37942,
- "intelPoints": 3525
+ "intelPoints": 3525,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "35 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
},
{
"level": 91,
@@ -562,7 +867,15 @@
"level": 93,
"xpRequired": 624,
"totalXp": 39814,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "More Efficient Tools",
+ "cost": "35 Spice Melange",
+ "description": "Reduced power consumption from using tools.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_toolusagecostspower_d.webp"
+ }
+ ]
},
{
"level": 94,
@@ -580,7 +893,15 @@
"level": 96,
"xpRequired": 624,
"totalXp": 41686,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Compactor Safety",
+ "cost": "35 Spice Melange",
+ "description": "Reduced sandworm threat generation when using the static compactor.",
+ "icon": "t_ui_iconspecialization_keystoneminor_gathering_compactorthreatgeneration_d.webp"
+ }
+ ]
},
{
"level": 97,
@@ -604,7 +925,15 @@
"level": 100,
"xpRequired": 624,
"totalXp": 44182,
- "intelPoints": 4025
+ "intelPoints": 4025,
+ "perks": [
+ {
+ "name": "Yield Jackpot",
+ "cost": "40 Spice Melange",
+ "description": "Adds a chance to gain additional resources when mining a resource node.",
+ "icon": "t_ui_iconspecialization_keystonemajor_gathering_yieldjackpot_d.webp"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/character-builder/data/spec-sabotage.json b/character-builder/data/spec-sabotage.json
index c0ff10f..a28149e 100644
--- a/character-builder/data/spec-sabotage.json
+++ b/character-builder/data/spec-sabotage.json
@@ -10,19 +10,43 @@
"level": 1,
"xpRequired": 100,
"totalXp": 100,
- "intelPoints": 250
+ "intelPoints": 250,
+ "perks": [
+ {
+ "name": "Head Hunter",
+ "cost": "2 Spice Melange",
+ "description": "Increases damage dealt to enemies when shooting them in the head.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_headshotdmg_d.webp"
+ }
+ ]
},
{
"level": 2,
"xpRequired": 105,
"totalXp": 205,
- "intelPoints": 21000
+ "intelPoints": 21000,
+ "perks": [
+ {
+ "name": "Soft Step",
+ "cost": "2 Spice Melange",
+ "description": "Traps triggered by you take more time to detonate.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_trapstriggerdetonate_d.webp"
+ }
+ ]
},
{
"level": 3,
"xpRequired": 110,
"totalXp": 315,
- "intelPoints": 250
+ "intelPoints": 250,
+ "perks": [
+ {
+ "name": "Loosen the Purse Strings",
+ "cost": "2 Spice Melange",
+ "description": "Gain additional House Scrip when completing Landsraad Missions.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_morehousecredits_d.webp"
+ }
+ ]
},
{
"level": 4,
@@ -34,7 +58,15 @@
"level": 5,
"xpRequired": 122,
"totalXp": 553,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Discreet",
+ "cost": "2 Spice Melange",
+ "description": "Reduces the distance that enemies sense you.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducedistancenpcsense_d.webp"
+ }
+ ]
},
{
"level": 6,
@@ -52,7 +84,15 @@
"level": 8,
"xpRequired": 142,
"totalXp": 958,
- "intelPoints": 21000
+ "intelPoints": 21000,
+ "perks": [
+ {
+ "name": "Explosive",
+ "cost": "2 Spice Melange",
+ "description": "Increases the damage dealt by explosive barrels that you detonate.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_moredamageexplosivebarrels_d.webp"
+ }
+ ]
},
{
"level": 9,
@@ -64,7 +104,15 @@
"level": 10,
"xpRequired": 157,
"totalXp": 1264,
- "intelPoints": 550
+ "intelPoints": 550,
+ "perks": [
+ {
+ "name": "Head Hunter",
+ "cost": "5 Spice Melange",
+ "description": "Increases damage dealt to enemies when shooting them in the head.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_headshotdmg_d.webp"
+ }
+ ]
},
{
"level": 11,
@@ -76,7 +124,15 @@
"level": 12,
"xpRequired": 171,
"totalXp": 1599,
- "intelPoints": 5150
+ "intelPoints": 5150,
+ "perks": [
+ {
+ "name": "Infiltrator",
+ "cost": "5 Spice Melange",
+ "description": "Reduces range at which you can be scanned.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerangescanned_d.webp"
+ }
+ ]
},
{
"level": 13,
@@ -94,7 +150,15 @@
"level": 15,
"xpRequired": 194,
"totalXp": 2157,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Hard to Spot",
+ "cost": "5 Spice Melange",
+ "description": "Reduces speed at which enemies recognize you as a threat.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerecognitionspeed_d.webp"
+ }
+ ]
},
{
"level": 16,
@@ -106,7 +170,15 @@
"level": 17,
"xpRequired": 211,
"totalXp": 2570,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Greasing Palms",
+ "cost": "5 Spice Melange",
+ "description": "The cost of bribing Landsraad envoys is reduced.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_bribinglandsraad_d.webp"
+ }
+ ]
},
{
"level": 18,
@@ -118,7 +190,15 @@
"level": 19,
"xpRequired": 229,
"totalXp": 3019,
- "intelPoints": 550
+ "intelPoints": 550,
+ "perks": [
+ {
+ "name": "Landsraad Contributor",
+ "cost": "5 Spice Melange",
+ "description": "When completing a Landsraad task, you contribute more points on behalf of your faction toward gaining the support of that House.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_contributionlandsraad_d.webp"
+ }
+ ]
},
{
"level": 20,
@@ -136,7 +216,15 @@
"level": 22,
"xpRequired": 253,
"totalXp": 3757,
- "intelPoints": 1020
+ "intelPoints": 1020,
+ "perks": [
+ {
+ "name": "Loosen the Purse Strings",
+ "cost": "10 Spice Melange",
+ "description": "Gain additional House Scrip when completing Landsraad Missions.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_morehousecredits_d.webp"
+ }
+ ]
},
{
"level": 23,
@@ -148,7 +236,15 @@
"level": 24,
"xpRequired": 268,
"totalXp": 4285,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Shadow",
+ "cost": "10 Spice Melange",
+ "description": "Reduces the scanning duration when you are scanned.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_reducetimescanned_d.webp"
+ }
+ ]
},
{
"level": 25,
@@ -166,7 +262,15 @@
"level": 27,
"xpRequired": 292,
"totalXp": 5137,
- "intelPoints": 1050
+ "intelPoints": 1050,
+ "perks": [
+ {
+ "name": "Head Hunter",
+ "cost": "10 Spice Melange",
+ "description": "Increases damage dealt to enemies when shooting them in the head.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_headshotdmg_d.webp"
+ }
+ ]
},
{
"level": 28,
@@ -178,7 +282,15 @@
"level": 29,
"xpRequired": 310,
"totalXp": 5748,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Greasing Palms",
+ "cost": "10 Spice Melange",
+ "description": "The cost of bribing Landsraad envoys is reduced.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_bribinglandsraad_d.webp"
+ }
+ ]
},
{
"level": 30,
@@ -196,7 +308,15 @@
"level": 32,
"xpRequired": 334,
"totalXp": 6727,
- "intelPoints": 10150
+ "intelPoints": 10150,
+ "perks": [
+ {
+ "name": "Infiltrator",
+ "cost": "10 Spice Melange",
+ "description": "Reduces range at which you can be scanned.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerangescanned_d.webp"
+ }
+ ]
},
{
"level": 33,
@@ -214,7 +334,15 @@
"level": 35,
"xpRequired": 358,
"totalXp": 7777,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Shadow",
+ "cost": "15 Spice Melange",
+ "description": "Reduces the scanning duration when you are scanned.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_reducetimescanned_d.webp"
+ }
+ ]
},
{
"level": 36,
@@ -226,7 +354,15 @@
"level": 37,
"xpRequired": 375,
"totalXp": 8518,
- "intelPoints": 1550
+ "intelPoints": 1550,
+ "perks": [
+ {
+ "name": "Loosen the Purse Strings",
+ "cost": "15 Spice Melange",
+ "description": "Gain additional House Scrip when completing Landsraad Missions.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_morehousecredits_d.webp"
+ }
+ ]
},
{
"level": 38,
@@ -244,7 +380,15 @@
"level": 40,
"xpRequired": 402,
"totalXp": 9697,
- "intelPoints": 15
+ "intelPoints": 15,
+ "perks": [
+ {
+ "name": "What\u2019s Theirs is Mine",
+ "cost": "15 Spice Melange",
+ "description": "Enemy corpses grant additional loot.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_extraloot_d.webp"
+ }
+ ]
},
{
"level": 41,
@@ -262,7 +406,15 @@
"level": 43,
"xpRequired": 426,
"totalXp": 10951,
- "intelPoints": 15100
+ "intelPoints": 15100,
+ "perks": [
+ {
+ "name": "Landsraad Contributor",
+ "cost": "15 Spice Melange",
+ "description": "When completing a Landsraad task, you contribute more points on behalf of your faction toward gaining the support of that House.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_contributionlandsraad_d.webp"
+ }
+ ]
},
{
"level": 44,
@@ -274,7 +426,15 @@
"level": 45,
"xpRequired": 442,
"totalXp": 11827,
- "intelPoints": 1520
+ "intelPoints": 1520,
+ "perks": [
+ {
+ "name": "Loosen the Purse Strings",
+ "cost": "15 Spice Melange",
+ "description": "Gain additional House Scrip when completing Landsraad Missions.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_morehousecredits_d.webp"
+ }
+ ]
},
{
"level": 46,
@@ -292,7 +452,15 @@
"level": 48,
"xpRequired": 468,
"totalXp": 13204,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Shadow",
+ "cost": "20 Spice Melange",
+ "description": "Reduces the scanning duration when you are scanned.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_reducetimescanned_d.webp"
+ }
+ ]
},
{
"level": 49,
@@ -304,7 +472,15 @@
"level": 50,
"xpRequired": 486,
"totalXp": 14167,
- "intelPoints": 2050
+ "intelPoints": 2050,
+ "perks": [
+ {
+ "name": "Head Hunter",
+ "cost": "20 Spice Melange",
+ "description": "Increases damage dealt to enemies when shooting them in the head.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_headshotdmg_d.webp"
+ }
+ ]
},
{
"level": 51,
@@ -322,7 +498,15 @@
"level": 53,
"xpRequired": 510,
"totalXp": 15673,
- "intelPoints": 2050
+ "intelPoints": 2050,
+ "perks": [
+ {
+ "name": "Landsraad Contributor",
+ "cost": "20 Spice Melange",
+ "description": "When completing a Landsraad task, you contribute more points on behalf of your faction toward gaining the support of that House.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_contributionlandsraad_d.webp"
+ }
+ ]
},
{
"level": 54,
@@ -334,7 +518,15 @@
"level": 55,
"xpRequired": 526,
"totalXp": 16717,
- "intelPoints": 20150
+ "intelPoints": 20150,
+ "perks": [
+ {
+ "name": "Infiltrator",
+ "cost": "20 Spice Melange",
+ "description": "Reduces range at which you can be scanned.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerangescanned_d.webp"
+ }
+ ]
},
{
"level": 56,
@@ -352,7 +544,15 @@
"level": 58,
"xpRequired": 552,
"totalXp": 18346,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Greasing Palms",
+ "cost": "20 Spice Melange",
+ "description": "The cost of bribing Landsraad envoys is reduced.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_bribinglandsraad_d.webp"
+ }
+ ]
},
{
"level": 59,
@@ -364,7 +564,15 @@
"level": 60,
"xpRequired": 570,
"totalXp": 19477,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Loosen the Purse Strings",
+ "cost": "25 Spice Melange",
+ "description": "Gain additional House Scrip when completing Landsraad Missions.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_morehousecredits_d.webp"
+ }
+ ]
},
{
"level": 61,
@@ -382,7 +590,15 @@
"level": 63,
"xpRequired": 585,
"totalXp": 21217,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Shadow",
+ "cost": "25 Spice Melange",
+ "description": "Reduces the scanning duration when you are scanned.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_reducetimescanned_d.webp"
+ }
+ ]
},
{
"level": 64,
@@ -394,7 +610,15 @@
"level": 65,
"xpRequired": 595,
"totalXp": 22402,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Hard to Spot",
+ "cost": "25 Spice Melange",
+ "description": "Reduces speed at which enemies recognize you as a threat.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerecognitionspeed_d.webp"
+ }
+ ]
},
{
"level": 66,
@@ -418,7 +642,15 @@
"level": 69,
"xpRequired": 618,
"totalXp": 24838,
- "intelPoints": 25150
+ "intelPoints": 25150,
+ "perks": [
+ {
+ "name": "Infiltrator",
+ "cost": "25 Spice Melange",
+ "description": "Reduces range at which you can be scanned.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerangescanned_d.webp"
+ }
+ ]
},
{
"level": 70,
@@ -436,7 +668,15 @@
"level": 72,
"xpRequired": 624,
"totalXp": 26710,
- "intelPoints": 2550
+ "intelPoints": 2550,
+ "perks": [
+ {
+ "name": "Landsraad Contributor",
+ "cost": "25 Spice Melange",
+ "description": "When completing a Landsraad task, you contribute more points on behalf of your faction toward gaining the support of that House.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_contributionlandsraad_d.webp"
+ }
+ ]
},
{
"level": 73,
@@ -448,13 +688,30 @@
"level": 74,
"xpRequired": 624,
"totalXp": 27958,
- "intelPoints": 3050
+ "intelPoints": 3050,
+ "perks": [
+ {
+ "name": "Head Hunter",
+ "cost": "30 Spice Melange",
+ "description": "Increases damage dealt to enemies when shooting them in the head.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_headshotdmg_d.webp"
+ }
+ ]
},
{
"level": 75,
"xpRequired": 624,
"totalXp": 28582,
- "intelPoints": 30
+ "intelPoints": 30,
+ "perks": [
+ {
+ "name": "Saboteur\u2019s Helm Variant",
+ "cost": "30 Spice Melange",
+ "description": "Headgear for those expert in the nefarious enterprise of undoing. Such devious souls can see a seemingly impenetrable wall, and know which single brick to remove in order to cause the whole thing to come tumbling down.\n\nUsed to customize helmets.",
+ "bonus": "Unlocks cosmetic reward",
+ "icon": "t_ui_iconspecialization_reward_sabotage_malehelmet01_d.webp"
+ }
+ ]
},
{
"level": 76,
@@ -472,7 +729,15 @@
"level": 78,
"xpRequired": 624,
"totalXp": 30454,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Greasing Palms",
+ "cost": "30 Spice Melange",
+ "description": "The cost of bribing Landsraad envoys is reduced.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_bribinglandsraad_d.webp"
+ }
+ ]
},
{
"level": 79,
@@ -490,7 +755,15 @@
"level": 81,
"xpRequired": 624,
"totalXp": 32326,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Shadow",
+ "cost": "30 Spice Melange",
+ "description": "Reduces the scanning duration when you are scanned.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_reducetimescanned_d.webp"
+ }
+ ]
},
{
"level": 82,
@@ -514,7 +787,15 @@
"level": 85,
"xpRequired": 624,
"totalXp": 34822,
- "intelPoints": 3050
+ "intelPoints": 3050,
+ "perks": [
+ {
+ "name": "Loosen the Purse Strings",
+ "cost": "30 Spice Melange",
+ "description": "Gain additional House Scrip when completing Landsraad Missions.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_morehousecredits_d.webp"
+ }
+ ]
},
{
"level": 86,
@@ -532,7 +813,15 @@
"level": 88,
"xpRequired": 624,
"totalXp": 36694,
- "intelPoints": 3550
+ "intelPoints": 3550,
+ "perks": [
+ {
+ "name": "Landsraad Contributor",
+ "cost": "35 Spice Melange",
+ "description": "When completing a Landsraad task, you contribute more points on behalf of your faction toward gaining the support of that House.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_contributionlandsraad_d.webp"
+ }
+ ]
},
{
"level": 89,
@@ -544,7 +833,15 @@
"level": 90,
"xpRequired": 624,
"totalXp": 37942,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Greasing Palms",
+ "cost": "35 Spice Melange",
+ "description": "The cost of bribing Landsraad envoys is reduced.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_bribinglandsraad_d.webp"
+ }
+ ]
},
{
"level": 91,
@@ -562,7 +859,15 @@
"level": 93,
"xpRequired": 624,
"totalXp": 39814,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Discreet",
+ "cost": "35 Spice Melange",
+ "description": "Reduces the distance that enemies sense you.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducedistancenpcsense_d.webp"
+ }
+ ]
},
{
"level": 94,
@@ -574,7 +879,15 @@
"level": 95,
"xpRequired": 624,
"totalXp": 41062,
- "intelPoints": 0
+ "intelPoints": 0,
+ "perks": [
+ {
+ "name": "Greasing Palms",
+ "cost": "35 Spice Melange",
+ "description": "The cost of bribing Landsraad envoys is reduced.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_bribinglandsraad_d.webp"
+ }
+ ]
},
{
"level": 96,
@@ -592,7 +905,15 @@
"level": 98,
"xpRequired": 624,
"totalXp": 42934,
- "intelPoints": 35150
+ "intelPoints": 35150,
+ "perks": [
+ {
+ "name": "Infiltrator",
+ "cost": "35 Spice Melange",
+ "description": "Reduces range at which you can be scanned.",
+ "icon": "t_ui_iconspecialization_keystoneminor_sabotage_reducerangescanned_d.webp"
+ }
+ ]
},
{
"level": 99,
@@ -604,7 +925,15 @@
"level": 100,
"xpRequired": 624,
"totalXp": 44182,
- "intelPoints": 4050
+ "intelPoints": 4050,
+ "perks": [
+ {
+ "name": "Head Hunter",
+ "cost": "40 Spice Melange",
+ "description": "Increases damage dealt to enemies when shooting them in the head.",
+ "icon": "t_ui_iconspecialization_keystonemajor_sabotage_headshotdmg_d.webp"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/character-builder/frontend/src/App.vue b/character-builder/frontend/src/App.vue
index 580f98d..4898e0f 100644
--- a/character-builder/frontend/src/App.vue
+++ b/character-builder/frontend/src/App.vue
@@ -3,7 +3,13 @@ import { computed, onMounted, ref, shallowRef, watch } from 'vue';
import XpProgressCard from './components/XpProgressCard.vue';
import FactionTrack from './components/FactionTrack.vue';
import SkillTree from './components/SkillTree.vue';
-import { applyBuild, build, resetBuild, setClass, setHouse } from './store';
+import {
+ applyBuild,
+ build,
+ resetBuild,
+ setHouse,
+ setViewedClass,
+} from './store';
import {
CLASSES,
HOUSES,
@@ -104,6 +110,48 @@ const totalIntelAtLevel = computed(() => {
return charXp.value.rows[idx]?.totalIntelPoints || 0;
});
+// Skill points are a single global pool spent across all 5 trees.
+const totalSpentAcrossClasses = computed(() =>
+ Object.values(build.skills).reduce((a, b) => a + (b || 0), 0),
+);
+
+// Per-class summary: { classId: { spent, allocations: [{node, points}] } }
+const summaryByClass = computed(() => {
+ const out: Record<
+ ClassId,
+ { spent: number; allocations: { tag: string; name: string; kind: string; points: number; max: number }[] }
+ > = {
+ benegesserit: { spent: 0, allocations: [] },
+ mentat: { spent: 0, allocations: [] },
+ planetologist: { spent: 0, allocations: [] },
+ swordmaster: { spent: 0, allocations: [] },
+ trooper: { spent: 0, allocations: [] },
+ };
+ for (const c of CLASSES) {
+ const tree = skillTrees.value[c.id];
+ if (!tree) continue;
+ for (const node of tree.nodes) {
+ const pts = build.skills[node.tag] || 0;
+ if (pts > 0) {
+ out[c.id].spent += pts;
+ out[c.id].allocations.push({
+ tag: node.tag,
+ name: node.name,
+ kind: node.kind,
+ points: pts,
+ max: node.maxPoints,
+ });
+ }
+ }
+ }
+ return out;
+});
+
+function resetAllSkills() {
+ if (!confirm('Clear allocated points across ALL classes?')) return;
+ build.skills = {};
+}
+
async function share() {
saving.value = true;
shareStatus.value = '';
@@ -202,11 +250,11 @@ const specMeta: Record