dune-tools/character-builder/data/skills-planetologist.json
Vantz Stockwell f142725dd8 Skill tree: subtrees, loadout slots, label fix
Skill trees now render the way the source does: each class has three named
subtrees (e.g. Swordmaster: The Blade / The Will / The Way), each with its
own 3-col or 5-col grid, sized in 72px cells. Extractor parses subtrees
separately so the per-tree row/col coordinates are correct (previously all
22 nodes were stacked on one combined grid and overlapped). Connector
edges are mapped per-subtree too.

Loadout: new global 3-ability + 3-technique slot row at the bottom of the
Skill Trees panel. The cap is global across all 5 classes (matches the
source HTML which has `id=active-Ability-N` / `id=active-Technique-N`
without per-tree scope). Click a slot to pick from any allocated Ability
or Spice (for Ability slots) or any allocated Perk (for Technique slots);
right-click clears. Slot backgrounds use the local ability.png /
technique.png artwork copied into /icons.

Label overlap fix: constrained the name label under each node to the node
width (72px) and bumped the vertical gap from 44 to 60px so 2-3 line names
have room without bleeding into the row below.

Existing saved builds migrate cleanly — loadout normalizes to length-3
slot arrays if absent or malformed.

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

354 lines
No EOL
10 KiB
JSON

{
"id": "planetologist",
"name": "Planetologist",
"subtrees": [
{
"name": "Scientist",
"cols": 3,
"nodes": [
{
"tag": "Skills.Perk.BatteryExpert",
"id": "BatteryExpert",
"name": "Conservation of Energy",
"kind": "Perk",
"row": 1,
"col": 2,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeperkbatteryexpert_d.webp",
"url": "https://dune.gaming.tools/skills/skills-perk-batteryexpert"
},
{
"tag": "Skills.Attribute.Scientist5",
"id": "Scientist5",
"name": "Compaction",
"kind": "Attribute",
"row": 2,
"col": 1,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributespiceyield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-scientist5"
},
{
"tag": "Skills.Science.m_PowerMax",
"id": "m_PowerMax",
"name": "Overcharge",
"kind": "Science",
"row": 2,
"col": 3,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributemineralyield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-science-m_powermax"
},
{
"tag": "Skills.Attribute.Scientist4",
"id": "Scientist4",
"name": "Deep Analysis",
"kind": "Attribute",
"row": 3,
"col": 2,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributemineralyield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-scientist4"
},
{
"tag": "Skills.Attribute.Scientist2",
"id": "Scientist2",
"name": "Dew Gathering",
"kind": "Attribute",
"row": 4,
"col": 1,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributewatheryield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-scientist2"
},
{
"tag": "Skills.Attribute.Scientist3",
"id": "Scientist3",
"name": "Rerouting",
"kind": "Attribute",
"row": 4,
"col": 3,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeskillpowerefficiency_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-scientist3"
},
{
"tag": "Skills.Attribute.Scientist1",
"id": "Scientist1",
"name": "Cutteray Mining",
"kind": "Attribute",
"row": 5,
"col": 2,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributemineralyield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-scientist1"
}
],
"edges": [
{
"from": "Skills.Attribute.Scientist5",
"to": "Skills.Perk.BatteryExpert"
},
{
"from": "Skills.Perk.BatteryExpert",
"to": "Skills.Science.m_PowerMax"
},
{
"from": "Skills.Attribute.Scientist4",
"to": "Skills.Attribute.Scientist5"
},
{
"from": "Skills.Attribute.Scientist2",
"to": "Skills.Attribute.Scientist5"
},
{
"from": "Skills.Attribute.Scientist4",
"to": "Skills.Science.m_PowerMax"
},
{
"from": "Skills.Attribute.Scientist3",
"to": "Skills.Science.m_PowerMax"
},
{
"from": "Skills.Attribute.Scientist2",
"to": "Skills.Attribute.Scientist4"
},
{
"from": "Skills.Attribute.Scientist3",
"to": "Skills.Attribute.Scientist4"
},
{
"from": "Skills.Attribute.Scientist1",
"to": "Skills.Attribute.Scientist2"
},
{
"from": "Skills.Attribute.Scientist1",
"to": "Skills.Attribute.Scientist3"
}
]
},
{
"name": "Explorer",
"cols": 3,
"nodes": [
{
"tag": "Skills.Attribute.Explorer5",
"id": "Explorer5",
"name": "Spice Surveyor",
"kind": "Attribute",
"row": 1,
"col": 2,
"maxPoints": 1,
"icon": "t_ui_iconskilltreeattributespice_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-explorer5"
},
{
"tag": "Skills.Attribute.Explorer3",
"id": "Explorer3",
"name": "Scanner Mastery",
"kind": "Attribute",
"row": 2,
"col": 1,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributescanningbonus_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-explorer3"
},
{
"tag": "Skills.Attribute.Explorer4",
"id": "Explorer4",
"name": "Stillsuit Seals",
"kind": "Attribute",
"row": 2,
"col": 3,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeskillhydration_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-explorer4"
},
{
"tag": "Skills.Attribute.Explorer1",
"id": "Explorer1",
"name": "Cartographer",
"kind": "Attribute",
"row": 4,
"col": 1,
"maxPoints": 1,
"icon": "t_ui_iconskilltreeskillobservation_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-explorer1"
},
{
"tag": "Skills.Attribute.Explorer2",
"id": "Explorer2",
"name": "Mountaineer",
"kind": "Attribute",
"row": 4,
"col": 3,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeskillclimber_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-explorer2"
},
{
"tag": "Skills.Ability.SuspensorPad",
"id": "SuspensorPad",
"name": "Suspensor Pad",
"kind": "Ability",
"row": 5,
"col": 2,
"maxPoints": 1,
"icon": "t_ui_iconabilitysuspensorpad_d.webp",
"url": "https://dune.gaming.tools/skills/skills-ability-suspensorpad"
}
],
"edges": [
{
"from": "Skills.Attribute.Explorer3",
"to": "Skills.Attribute.Explorer5"
},
{
"from": "Skills.Attribute.Explorer4",
"to": "Skills.Attribute.Explorer5"
},
{
"from": "Skills.Attribute.Explorer1",
"to": "Skills.Attribute.Explorer3"
},
{
"from": "Skills.Attribute.Explorer2",
"to": "Skills.Attribute.Explorer4"
},
{
"from": "Skills.Ability.SuspensorPad",
"to": "Skills.Attribute.Explorer1"
},
{
"from": "Skills.Ability.SuspensorPad",
"to": "Skills.Attribute.Explorer2"
}
]
},
{
"name": "Mechanic",
"cols": 3,
"nodes": [
{
"tag": "Skills.Spice.VehicleHeat",
"id": "VehicleHeat",
"name": "Heat Management",
"kind": "Spice",
"row": 1,
"col": 2,
"maxPoints": 1,
"icon": "t_ui_iconskilltreeheatmanagement_d.webp",
"url": "https://dune.gaming.tools/skills/skills-spice-vehicleheat"
},
{
"tag": "Skills.Attribute.Driver5",
"id": "Driver5",
"name": "Fuel Efficient Pilot",
"kind": "Attribute",
"row": 2,
"col": 1,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributevehicle_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-driver5"
},
{
"tag": "Skills.Attribute.Driver6",
"id": "Driver6",
"name": "Sandcrawler Yield",
"kind": "Attribute",
"row": 2,
"col": 3,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributespiceyield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-driver6"
},
{
"tag": "Skills.Attribute.Driver4",
"id": "Driver4",
"name": "Vehicle Scanning",
"kind": "Attribute",
"row": 3,
"col": 2,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributescanningbonus_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-driver4"
},
{
"tag": "Skills.Attribute.Driver2",
"id": "Driver2",
"name": "Fuel Efficient Driver",
"kind": "Attribute",
"row": 4,
"col": 1,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributevehicle_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-driver2"
},
{
"tag": "Skills.Attribute.Driver3",
"id": "Driver3",
"name": "Vehicle Mining",
"kind": "Attribute",
"row": 4,
"col": 3,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributemineralyield_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-driver3"
},
{
"tag": "Skills.Attribute.Driver1",
"id": "Driver1",
"name": "Vehicle Repair",
"kind": "Attribute",
"row": 5,
"col": 2,
"maxPoints": 3,
"icon": "t_ui_iconskilltreeattributerepairefficiency_d.webp",
"url": "https://dune.gaming.tools/skills/skills-attribute-driver1"
}
],
"edges": [
{
"from": "Skills.Attribute.Driver5",
"to": "Skills.Spice.VehicleHeat"
},
{
"from": "Skills.Attribute.Driver6",
"to": "Skills.Spice.VehicleHeat"
},
{
"from": "Skills.Attribute.Driver4",
"to": "Skills.Attribute.Driver5"
},
{
"from": "Skills.Attribute.Driver2",
"to": "Skills.Attribute.Driver5"
},
{
"from": "Skills.Attribute.Driver4",
"to": "Skills.Attribute.Driver6"
},
{
"from": "Skills.Attribute.Driver3",
"to": "Skills.Attribute.Driver6"
},
{
"from": "Skills.Attribute.Driver2",
"to": "Skills.Attribute.Driver4"
},
{
"from": "Skills.Attribute.Driver3",
"to": "Skills.Attribute.Driver4"
},
{
"from": "Skills.Attribute.Driver1",
"to": "Skills.Attribute.Driver2"
},
{
"from": "Skills.Attribute.Driver1",
"to": "Skills.Attribute.Driver3"
}
]
}
]
}