- 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>
338 lines
No EOL
9.6 KiB
JSON
338 lines
No EOL
9.6 KiB
JSON
{
|
|
"id": "trooper",
|
|
"name": "Trooper",
|
|
"nodes": [
|
|
{
|
|
"tag": "Skills.Ability.EnergyCapsule",
|
|
"id": "EnergyCapsule",
|
|
"name": "Energy Capsule",
|
|
"kind": "Ability",
|
|
"row": 1,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconabilityenergycapsule_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-energycapsule"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Weaponry5",
|
|
"id": "Weaponry5",
|
|
"name": "Heavy Weapon Damage",
|
|
"kind": "Attribute",
|
|
"row": 2,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamagebonusheavyweapon_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-weaponry5"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Weaponry6",
|
|
"id": "Weaponry6",
|
|
"name": "Gunsmith",
|
|
"kind": "Attribute",
|
|
"row": 2,
|
|
"col": 4,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributerepairefficiency_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-weaponry6"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.HeavyWeaponNaib",
|
|
"id": "HeavyWeaponNaib",
|
|
"name": "Heavy Weapon Agility",
|
|
"kind": "Perk",
|
|
"row": 3,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeperkheavyweaponnaib_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-heavyweaponnaib"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Weaponry3",
|
|
"id": "Weaponry3",
|
|
"name": "Scattergun Damage",
|
|
"kind": "Attribute",
|
|
"row": 3,
|
|
"col": 3,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamagebonusrifle_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-weaponry3"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Weaponry4",
|
|
"id": "Weaponry4",
|
|
"name": "Field Maintenance",
|
|
"kind": "Attribute",
|
|
"row": 3,
|
|
"col": 5,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributerepair_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-weaponry4"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Weaponry2",
|
|
"id": "Weaponry2",
|
|
"name": "Disruptor Damage",
|
|
"kind": "Attribute",
|
|
"row": 4,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamagebonussmg_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-weaponry2"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.BodyShots",
|
|
"id": "BodyShots",
|
|
"name": "Center of Mass",
|
|
"kind": "Perk",
|
|
"row": 4,
|
|
"col": 4,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeperkcentralaim_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-bodyshots"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Weaponry1",
|
|
"id": "Weaponry1",
|
|
"name": "Ranged Damage",
|
|
"kind": "Attribute",
|
|
"row": 5,
|
|
"col": 3,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamage_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-weaponry1"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SuspensorBlast",
|
|
"id": "SuspensorBlast",
|
|
"name": "Suspensor Blast",
|
|
"kind": "Ability",
|
|
"row": 1,
|
|
"col": 2,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconabilitysuspensorblast_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-suspensorblast"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.DeathFromAbove",
|
|
"id": "DeathFromAbove",
|
|
"name": "Death from Above",
|
|
"kind": "Perk",
|
|
"row": 2,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeperkdeathfromabove_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-deathfromabove"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.CollapseGrenade",
|
|
"id": "CollapseGrenade",
|
|
"name": "Collapse Grenade",
|
|
"kind": "Ability",
|
|
"row": 2,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconabilitycollapsegrenade_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-collapsegrenade"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.SuspensorTech1",
|
|
"id": "SuspensorTech1",
|
|
"name": "Suspensor Efficiency",
|
|
"kind": "Attribute",
|
|
"row": 3,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeskillpowerefficiency_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-suspensortech1"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.SuspensorDash",
|
|
"id": "SuspensorDash",
|
|
"name": "Suspensor Dash",
|
|
"kind": "Perk",
|
|
"row": 4,
|
|
"col": 1,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconskilltreesuspensordash_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-suspensordash"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SuspensorGrenade_Amplification",
|
|
"id": "SuspensorGrenade_Amplification",
|
|
"name": "Gravity Field",
|
|
"kind": "Ability",
|
|
"row": 4,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_icongadgetamplificationgrenade_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-suspensorgrenade_amplification"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SuspensorGrenade_Reduction",
|
|
"id": "SuspensorGrenade_Reduction",
|
|
"name": "Anti-gravity Field",
|
|
"kind": "Ability",
|
|
"row": 5,
|
|
"col": 2,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_icongadgetreductionsuspensorgrenade_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-suspensorgrenade_reduction"
|
|
},
|
|
{
|
|
"tag": "Skills.Spice.GadgetReload",
|
|
"id": "GadgetReload",
|
|
"name": "Reflexive Reload",
|
|
"kind": "Spice",
|
|
"row": 1,
|
|
"col": 2,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconskilltreereflexivereload_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-spice-gadgetreload"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.AssaultSeeker",
|
|
"id": "AssaultSeeker",
|
|
"name": "Assault Seeker",
|
|
"kind": "Ability",
|
|
"row": 2,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconabilityassaultseeker_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-assaultseeker"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.MagneticAttractor",
|
|
"id": "MagneticAttractor",
|
|
"name": "Attractor Field",
|
|
"kind": "Ability",
|
|
"row": 2,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_icongadgetshigmultitoolmagneticattractor_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-magneticattractor"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.FragGrenade",
|
|
"id": "FragGrenade",
|
|
"name": "Explosive Grenade",
|
|
"kind": "Ability",
|
|
"row": 4,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_icongadgetfraggrenades_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-fraggrenade"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.TrooperCooldowns",
|
|
"id": "TrooperCooldowns",
|
|
"name": "Battle Hardened",
|
|
"kind": "Perk",
|
|
"row": 4,
|
|
"col": 3,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreetroopercooldown_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-troopercooldowns"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.CablePull",
|
|
"id": "CablePull",
|
|
"name": "Shigawire Claw",
|
|
"kind": "Ability",
|
|
"row": 5,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_icongadgetshigmultitoolsardaukarpull_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-cablepull"
|
|
}
|
|
],
|
|
"edges": [
|
|
{
|
|
"from": "Skills.Ability.EnergyCapsule",
|
|
"to": "Skills.Attribute.Weaponry5"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.EnergyCapsule",
|
|
"to": "Skills.Attribute.Weaponry6"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry5",
|
|
"to": "Skills.Perk.HeavyWeaponNaib"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry3",
|
|
"to": "Skills.Attribute.Weaponry5"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry3",
|
|
"to": "Skills.Attribute.Weaponry6"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry4",
|
|
"to": "Skills.Attribute.Weaponry6"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry2",
|
|
"to": "Skills.Perk.HeavyWeaponNaib"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry2",
|
|
"to": "Skills.Attribute.Weaponry3"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry3",
|
|
"to": "Skills.Perk.BodyShots"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry4",
|
|
"to": "Skills.Perk.BodyShots"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry1",
|
|
"to": "Skills.Attribute.Weaponry2"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Weaponry1",
|
|
"to": "Skills.Perk.BodyShots"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.SuspensorBlast",
|
|
"to": "Skills.Perk.DeathFromAbove"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.CollapseGrenade",
|
|
"to": "Skills.Ability.SuspensorBlast"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.SuspensorTech1",
|
|
"to": "Skills.Perk.DeathFromAbove"
|
|
},
|
|
{
|
|
"from": "Skills.Perk.DeathFromAbove",
|
|
"to": "Skills.Perk.SuspensorDash"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.CollapseGrenade",
|
|
"to": "Skills.Attribute.SuspensorTech1"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.CollapseGrenade",
|
|
"to": "Skills.Ability.SuspensorGrenade_Amplification"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.SuspensorTech1",
|
|
"to": "Skills.Perk.SuspensorDash"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.SuspensorGrenade_Amplification",
|
|
"to": "Skills.Attribute.SuspensorTech1"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.SuspensorGrenade_Reduction",
|
|
"to": "Skills.Perk.SuspensorDash"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.SuspensorGrenade_Amplification",
|
|
"to": "Skills.Ability.SuspensorGrenade_Reduction"
|
|
}
|
|
]
|
|
} |