- 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.5 KiB
JSON
338 lines
No EOL
9.5 KiB
JSON
{
|
|
"id": "mentat",
|
|
"name": "Mentat",
|
|
"nodes": [
|
|
{
|
|
"tag": "Skills.Perk.ShieldWeakpoint",
|
|
"id": "ShieldWeakpoint",
|
|
"name": "Shield Overcharge",
|
|
"kind": "Perk",
|
|
"row": 1,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconskilltreeshieldovercharge_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-shieldweakpoint"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.ExploitWeakness",
|
|
"id": "ExploitWeakness",
|
|
"name": "Exploit Weakness",
|
|
"kind": "Perk",
|
|
"row": 2,
|
|
"col": 2,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconskilltreespiceeffectexploitweakness_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-exploitweakness"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.MentalCalculus5",
|
|
"id": "MentalCalculus5",
|
|
"name": "Rifle Damage",
|
|
"kind": "Attribute",
|
|
"row": 2,
|
|
"col": 4,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamagebonusscattergun_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-mentalcalculus5"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.MentalCalculus3",
|
|
"id": "MentalCalculus3",
|
|
"name": "Tailoring",
|
|
"kind": "Attribute",
|
|
"row": 3,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributerepairefficiency_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-mentalcalculus3"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.HeadShots",
|
|
"id": "HeadShots",
|
|
"name": "Marksman",
|
|
"kind": "Perk",
|
|
"row": 3,
|
|
"col": 3,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeperkmarksman_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-headshots"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.MentalCalculus4",
|
|
"id": "MentalCalculus4",
|
|
"name": "Pistol Damage",
|
|
"kind": "Attribute",
|
|
"row": 3,
|
|
"col": 5,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamagebonusgun_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-mentalcalculus4"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.MentalCalculus1",
|
|
"id": "MentalCalculus1",
|
|
"name": "Garment Keeper",
|
|
"kind": "Attribute",
|
|
"row": 4,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributerepair_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-mentalcalculus1"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.MentalCalculus2",
|
|
"id": "MentalCalculus2",
|
|
"name": "Ranged Damage",
|
|
"kind": "Attribute",
|
|
"row": 4,
|
|
"col": 4,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamage_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-mentalcalculus2"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.TurretSeeker",
|
|
"id": "TurretSeeker",
|
|
"name": "The Sentinel",
|
|
"kind": "Ability",
|
|
"row": 5,
|
|
"col": 3,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconabilityturretseeker_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-turretseeker"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.HunterSeeker",
|
|
"id": "HunterSeeker",
|
|
"name": "Hunter-Seeker",
|
|
"kind": "Ability",
|
|
"row": 1,
|
|
"col": 2,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_icongadgethunterseeker_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-hunterseeker"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.PoisonTooth",
|
|
"id": "PoisonTooth",
|
|
"name": "Poison Tooth",
|
|
"kind": "Perk",
|
|
"row": 2,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreepoisontooth_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-poisontooth"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.StunDart",
|
|
"id": "StunDart",
|
|
"name": "Stunner",
|
|
"kind": "Ability",
|
|
"row": 2,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconabilitystunnerdart_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-stundart"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Assassination2",
|
|
"id": "Assassination2",
|
|
"name": "Assassin's Shot",
|
|
"kind": "Attribute",
|
|
"row": 3,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributedamage_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-assassination2"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.PoisonMine",
|
|
"id": "PoisonMine",
|
|
"name": "Poison Mine",
|
|
"kind": "Ability",
|
|
"row": 4,
|
|
"col": 1,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconabilitypoisonmine_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-poisonmine"
|
|
},
|
|
{
|
|
"tag": "Skills.Attribute.Assassination1",
|
|
"id": "Assassination1",
|
|
"name": "Headshot Damage",
|
|
"kind": "Attribute",
|
|
"row": 4,
|
|
"col": 3,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconskilltreeattributeheadshotbonus_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-attribute-assassination1"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.PoisonCapsuleLauncher",
|
|
"id": "PoisonCapsuleLauncher",
|
|
"name": "Poison Capsule",
|
|
"kind": "Ability",
|
|
"row": 5,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_icongadgetpoisoncapsulelauncher_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-poisoncapsulelauncher"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.PortableGenerator",
|
|
"id": "PortableGenerator",
|
|
"name": "Source of Power",
|
|
"kind": "Ability",
|
|
"row": 1,
|
|
"col": 2,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconabilityportablegenerator_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-portablegenerator"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SuspensorMine_Reduction",
|
|
"id": "SuspensorMine_Reduction",
|
|
"name": "Anti-gravity Mine",
|
|
"kind": "Ability",
|
|
"row": 2,
|
|
"col": 1,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_icongadgetreductionremotemine_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-suspensormine_reduction"
|
|
},
|
|
{
|
|
"tag": "Skills.Perk.IronWill",
|
|
"id": "IronWill",
|
|
"name": "Iron Will",
|
|
"kind": "Perk",
|
|
"row": 2,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconskilltreeironwill_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-perk-ironwill"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SuspensorMine_Amplification",
|
|
"id": "SuspensorMine_Amplification",
|
|
"name": "Gravity Mine",
|
|
"kind": "Ability",
|
|
"row": 4,
|
|
"col": 1,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_icongadgetamplificationremotemine_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-suspensormine_amplification"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SolidoDecoy",
|
|
"id": "SolidoDecoy",
|
|
"name": "Solido Decoy",
|
|
"kind": "Ability",
|
|
"row": 4,
|
|
"col": 3,
|
|
"maxPoints": 1,
|
|
"icon": "t_ui_iconabilitysolidodecoy_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-solidodecoy"
|
|
},
|
|
{
|
|
"tag": "Skills.Ability.SuspensorWall",
|
|
"id": "SuspensorWall",
|
|
"name": "Shield Wall",
|
|
"kind": "Ability",
|
|
"row": 5,
|
|
"col": 2,
|
|
"maxPoints": 3,
|
|
"icon": "t_ui_iconabilitysuspensorwall_d.webp",
|
|
"url": "https://dune.gaming.tools/skills/skills-ability-suspensorwall"
|
|
}
|
|
],
|
|
"edges": [
|
|
{
|
|
"from": "Skills.Perk.ExploitWeakness",
|
|
"to": "Skills.Perk.ShieldWeakpoint"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus5",
|
|
"to": "Skills.Perk.ShieldWeakpoint"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus3",
|
|
"to": "Skills.Perk.ExploitWeakness"
|
|
},
|
|
{
|
|
"from": "Skills.Perk.ExploitWeakness",
|
|
"to": "Skills.Perk.HeadShots"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus5",
|
|
"to": "Skills.Perk.HeadShots"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus4",
|
|
"to": "Skills.Attribute.MentalCalculus5"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus1",
|
|
"to": "Skills.Attribute.MentalCalculus3"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus1",
|
|
"to": "Skills.Perk.HeadShots"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus2",
|
|
"to": "Skills.Perk.HeadShots"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.MentalCalculus2",
|
|
"to": "Skills.Attribute.MentalCalculus4"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.TurretSeeker",
|
|
"to": "Skills.Attribute.MentalCalculus1"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.TurretSeeker",
|
|
"to": "Skills.Attribute.MentalCalculus2"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.HunterSeeker",
|
|
"to": "Skills.Perk.PoisonTooth"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.HunterSeeker",
|
|
"to": "Skills.Ability.StunDart"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Assassination2",
|
|
"to": "Skills.Perk.PoisonTooth"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.PoisonMine",
|
|
"to": "Skills.Perk.PoisonTooth"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.StunDart",
|
|
"to": "Skills.Attribute.Assassination2"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.StunDart",
|
|
"to": "Skills.Attribute.Assassination1"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.PoisonMine",
|
|
"to": "Skills.Attribute.Assassination2"
|
|
},
|
|
{
|
|
"from": "Skills.Attribute.Assassination1",
|
|
"to": "Skills.Attribute.Assassination2"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.PoisonCapsuleLauncher",
|
|
"to": "Skills.Ability.PoisonMine"
|
|
},
|
|
{
|
|
"from": "Skills.Ability.PoisonCapsuleLauncher",
|
|
"to": "Skills.Attribute.Assassination1"
|
|
}
|
|
]
|
|
} |