diff --git a/common/data/json/areas.json b/common/data/json/areas.json index 979ff48c..935023db 100644 --- a/common/data/json/areas.json +++ b/common/data/json/areas.json @@ -1029,7 +1029,8 @@ "connection_ids": [ "2_8_3", "2_8_6", - "2_8_4" + "2_8_4", + "2_8_14" ], "crafting_recipes": [ "Flask Duration - Rank 1" @@ -1045,7 +1046,8 @@ "parent_town_area_id": "2_8_town", "connection_ids": [ "2_8_8", - "2_8_10" + "2_8_10", + "2_8_14" ], "crafting_recipes": [] }, @@ -1107,6 +1109,21 @@ ], "crafting_recipes": [] }, + "2_8_14": { + "id": "2_8_14", + "name": "The Hidden Underbelly", + "map_name": null, + "act": 8, + "has_waypoint": false, + "is_town_area": false, + "parent_town_area_id": "2_8_town", + "connection_ids": [ + "2_8_9", + "2_8_5", + "2_8_11" + ], + "crafting_recipes": [] + }, "2_8_10": { "id": "2_8_10", "name": "The Imperial Fields", @@ -1182,6 +1199,22 @@ ], "crafting_recipes": [] }, + "2_8_11": { + "id": "2_8_11", + "name": "The Solaris Concourse", + "map_name": "The Solaris Concourse", + "act": 8, + "has_waypoint": true, + "is_town_area": false, + "parent_town_area_id": "2_8_town", + "connection_ids": [ + "2_8_12_1", + "2_8_13", + "2_8_13", + "2_8_14" + ], + "crafting_recipes": [] + }, "2_8_12_1": { "id": "2_8_12_1", "name": "The Solaris Temple Level 1", @@ -1288,21 +1321,6 @@ "Minions - Rank 1" ] }, - "2_8_11": { - "id": "2_8_11", - "name": "The Solaris Concourse", - "map_name": "The Solaris Concourse", - "act": 8, - "has_waypoint": true, - "is_town_area": false, - "parent_town_area_id": "2_8_town", - "connection_ids": [ - "2_8_12_1", - "2_8_13", - "2_8_13" - ], - "crafting_recipes": [] - }, "2_9_1": { "id": "2_9_1", "name": "The Blood Aqueduct", @@ -1859,7 +1877,9 @@ "connection_ids": [ "2_9_8" ], - "crafting_recipes": [] + "crafting_recipes": [ + "Trigger a Socketed Spell when you Use a Skill" + ] }, "2_9_10_1": { "id": "2_9_10_1", diff --git a/common/data/json/gems.json b/common/data/json/gems.json index 30a6f70d..91e74211 100644 --- a/common/data/json/gems.json +++ b/common/data/json/gems.json @@ -638,7 +638,7 @@ }, "Metadata/Items/Gems/SupportGemIncreasedDuration": { "id": "Metadata/Items/Gems/SupportGemIncreasedDuration", - "name": "Increased Duration Support", + "name": "More Duration Support", "primary_attribute": "strength", "required_level": 31, "is_support": true @@ -731,7 +731,7 @@ "id": "Metadata/Items/Gems/SkillGemVaalMoltenShell", "name": "Vaal Molten Shell", "primary_attribute": "strength", - "required_level": 4, + "required_level": 16, "is_support": false }, "Metadata/Items/Gems/SkillGemPowerSiphon": { @@ -1646,16 +1646,23 @@ }, "Metadata/Items/Gems/SkillGemRiposte": { "id": "Metadata/Items/Gems/SkillGemRiposte", - "name": "Riposte", + "name": "Glacial Shield Swipe", "primary_attribute": "dexterity", - "required_level": 4, + "required_level": 16, "is_support": false }, "Metadata/Items/Gems/SkillGemReckoning": { "id": "Metadata/Items/Gems/SkillGemReckoning", - "name": "Reckoning", + "name": "Swordstorm", "primary_attribute": "strength", - "required_level": 4, + "required_level": 16, + "is_support": false + }, + "Metadata/Items/Gems/SkillGemEviscerate": { + "id": "Metadata/Items/Gems/SkillGemEviscerate", + "name": "Eviscerate", + "primary_attribute": "strength", + "required_level": 16, "is_support": false }, "Metadata/Items/Gems/SkillGemStaticStrike": { @@ -1674,7 +1681,21 @@ }, "Metadata/Items/Gems/SkillGemVengeance": { "id": "Metadata/Items/Gems/SkillGemVengeance", - "name": "Vengeance", + "name": "Crushing Fist", + "primary_attribute": "strength", + "required_level": 4, + "is_support": false + }, + "Metadata/Items/Gems/SkillGemDivineRetribution": { + "id": "Metadata/Items/Gems/SkillGemDivineRetribution", + "name": "Divine Retribution", + "primary_attribute": "intelligence", + "required_level": 16, + "is_support": false + }, + "Metadata/Items/Gems/SkillGemVengefulCry": { + "id": "Metadata/Items/Gems/SkillGemVengefulCry", + "name": "Vengeful Cry", "primary_attribute": "strength", "required_level": 24, "is_support": false @@ -1945,20 +1966,6 @@ "required_level": 38, "is_support": true }, - "Metadata/Items/Gems/SkillGemMeleeTotem": { - "id": "Metadata/Items/Gems/SkillGemMeleeTotem", - "name": "Ancestral Protector", - "primary_attribute": "strength", - "required_level": 4, - "is_support": false - }, - "Metadata/Items/Gems/SkillGemAncestralWarchief": { - "id": "Metadata/Items/Gems/SkillGemAncestralWarchief", - "name": "Ancestral Warchief", - "primary_attribute": "strength", - "required_level": 28, - "is_support": false - }, "Metadata/Items/Gems/SkillGemSunder": { "id": "Metadata/Items/Gems/SkillGemSunder", "name": "Sunder", @@ -2253,13 +2260,6 @@ "required_level": 31, "is_support": true }, - "Metadata/Items/Gems/SkillGemVaalAncestralWarchief": { - "id": "Metadata/Items/Gems/SkillGemVaalAncestralWarchief", - "name": "Vaal Ancestral Warchief", - "primary_attribute": "strength", - "required_level": 28, - "is_support": false - }, "Metadata/Items/Gems/SkillGemConsecratedPath": { "id": "Metadata/Items/Gems/SkillGemConsecratedPath", "name": "Consecrated Path", @@ -3268,13 +3268,6 @@ "required_level": 24, "is_support": false }, - "Metadata/Items/Gems/SupportGemEarthbreaker": { - "id": "Metadata/Items/Gems/SupportGemEarthbreaker", - "name": "Earthbreaker Support", - "primary_attribute": "strength", - "required_level": 8, - "is_support": true - }, "Metadata/Items/Gems/SkillGemAbsolution": { "id": "Metadata/Items/Gems/SkillGemAbsolution", "name": "Absolution", @@ -3746,7 +3739,7 @@ }, "Metadata/Items/Gems/SkillGemCallToArms": { "id": "Metadata/Items/Gems/SkillGemCallToArms", - "name": "Call to Arms", + "name": "Autoexertion", "primary_attribute": "strength", "required_level": 24, "is_support": false @@ -3757,5 +3750,26 @@ "primary_attribute": "intelligence", "required_level": 18, "is_support": true + }, + "Metadata/Items/Gems/SupportGemOverexertion": { + "id": "Metadata/Items/Gems/SupportGemOverexertion", + "name": "Overexertion Support", + "primary_attribute": "strength", + "required_level": 38, + "is_support": true + }, + "Metadata/Items/Gems/SupportGemExpertRetaliation": { + "id": "Metadata/Items/Gems/SupportGemExpertRetaliation", + "name": "Expert Retaliation Support", + "primary_attribute": "strength", + "required_level": 31, + "is_support": true + }, + "Metadata/Items/Gems/SupportGemRupture": { + "id": "Metadata/Items/Gems/SupportGemRupture", + "name": "Rupture Support", + "primary_attribute": "dexterity", + "required_level": 38, + "is_support": true } } \ No newline at end of file diff --git a/common/data/json/quests.json b/common/data/json/quests.json index a5348a8d..3ffed44b 100644 --- a/common/data/json/quests.json +++ b/common/data/json/quests.json @@ -796,13 +796,6 @@ "Templar" ] }, - "Metadata/Items/Gems/SkillGemMeleeTotem": { - "classes": [ - "Templar", - "Marauder", - "Duelist" - ] - }, "Metadata/Items/Gems/SkillGemVigilantStrike": { "classes": [ "Templar", @@ -818,11 +811,17 @@ "Scion" ] }, - "Metadata/Items/Gems/SkillGemMoltenShell": { + "Metadata/Items/Gems/SkillGemSteelskin": { "classes": [ "Marauder" ] }, + "Metadata/Items/Gems/SkillGemVengeance": { + "classes": [ + "Marauder", + "Duelist" + ] + }, "Metadata/Items/Gems/SkillGemProjectileWeakness": { "classes": [ "Duelist", @@ -852,12 +851,6 @@ "Scion" ] }, - "Metadata/Items/Gems/SkillGemRiposte": { - "classes": [ - "Ranger", - "Shadow" - ] - }, "Metadata/Items/Gems/SkillGemShrapnelBallista": { "classes": [ "Ranger" @@ -1078,7 +1071,7 @@ "Scion" ] }, - "Metadata/Items/Gems/SkillGemSteelskin": { + "Metadata/Items/Gems/SkillGemShieldCharge": { "classes": [ "Templar", "Marauder", @@ -1662,11 +1655,6 @@ "Scion" ] }, - "Metadata/Items/Gems/SkillGemShieldCharge": { - "classes": [ - "Marauder" - ] - }, "Metadata/Items/Gems/SkillGemEnduringCry": { "classes": [ "Marauder", @@ -2673,6 +2661,11 @@ "Templar" ] }, + "Metadata/Items/Gems/SkillGemDivineRetribution": { + "classes": [ + "Templar" + ] + }, "Metadata/Items/Gems/SkillGemWarlordsMark": { "classes": [ "Marauder", @@ -2698,6 +2691,17 @@ "Scion" ] }, + "Metadata/Items/Gems/SkillGemMoltenShell": { + "classes": [ + "Marauder" + ] + }, + "Metadata/Items/Gems/SkillGemEviscerate": { + "classes": [ + "Marauder", + "Duelist" + ] + }, "Metadata/Items/Gems/SkillGemPoachersMark": { "classes": [ "Duelist", @@ -2728,6 +2732,16 @@ "Duelist" ] }, + "Metadata/Items/Gems/SkillGemReckoning": { + "classes": [ + "Duelist" + ] + }, + "Metadata/Items/Gems/SkillGemRiposte": { + "classes": [ + "Duelist" + ] + }, "Metadata/Items/Gems/SkillGemHeraldOfAgony": { "classes": [ "Ranger", @@ -2861,6 +2875,14 @@ ], "npc": "Yeena" }, + "Metadata/Items/Gems/SkillGemDivineRetribution": { + "classes": [ + "Templar", + "Witch", + "Scion" + ], + "npc": "Yeena" + }, "Metadata/Items/Gems/SkillGemEnsnaringArrow": { "classes": [ "Duelist", @@ -2870,6 +2892,15 @@ ], "npc": "Yeena" }, + "Metadata/Items/Gems/SkillGemEviscerate": { + "classes": [ + "Marauder", + "Duelist", + "Templar", + "Scion" + ], + "npc": "Yeena" + }, "Metadata/Items/Gems/SkillGemFleshAndStone": { "classes": [ "Duelist", @@ -3789,11 +3820,6 @@ "Marauder" ] }, - "Metadata/Items/Gems/SkillGemVengeance": { - "classes": [ - "Marauder" - ] - }, "Metadata/Items/Gems/SkillGemPride": { "classes": [ "Marauder", @@ -3817,6 +3843,11 @@ "Scion" ] }, + "Metadata/Items/Gems/SkillGemVengefulCry": { + "classes": [ + "Marauder" + ] + }, "Metadata/Items/Gems/SkillGemHatred": { "classes": [ "Duelist", @@ -4143,6 +4174,14 @@ ], "npc": "Clarissa" }, + "Metadata/Items/Gems/SkillGemVengefulCry": { + "classes": [ + "Duelist", + "Marauder", + "Scion" + ], + "npc": "Clarissa" + }, "Metadata/Items/Gems/SkillGemNewVulnerability": { "classes": [ "Duelist", @@ -4397,11 +4436,6 @@ "Marauder" ] }, - "Metadata/Items/Gems/SkillGemAncestralWarchief": { - "classes": [ - "Marauder" - ] - }, "Metadata/Items/Gems/SkillGemTectonicSlam": { "classes": [ "Marauder", @@ -5095,11 +5129,6 @@ "Duelist" ] }, - "Metadata/Items/Gems/SupportGemDivineBlessing": { - "classes": [ - "Templar" - ] - }, "Metadata/Items/Gems/SupportGemSwiftbrand": { "classes": [ "Templar" @@ -5168,6 +5197,11 @@ "Ranger" ] }, + "Metadata/Items/Gems/SupportGemExpertRetaliation": { + "classes": [ + "Duelist" + ] + }, "Metadata/Items/Gems/SupportGemFork": { "classes": [ "Ranger" @@ -5644,6 +5678,10 @@ "classes": [], "npc": "Siosa" }, + "Metadata/Items/Gems/SkillGemDivineRetribution": { + "classes": [], + "npc": "Siosa" + }, "Metadata/Items/Gems/SkillGemDominatingBlow": { "classes": [], "npc": "Siosa" @@ -5728,6 +5766,14 @@ "classes": [], "npc": "Siosa" }, + "Metadata/Items/Gems/SkillGemEviscerate": { + "classes": [], + "npc": "Siosa" + }, + "Metadata/Items/Gems/SupportGemExpertRetaliation": { + "classes": [], + "npc": "Siosa" + }, "Metadata/Items/Gems/SkillGemExplosiveArrow": { "classes": [], "npc": "Siosa" @@ -6616,6 +6662,10 @@ "classes": [], "npc": "Siosa" }, + "Metadata/Items/Gems/SkillGemVengefulCry": { + "classes": [], + "npc": "Siosa" + }, "Metadata/Items/Gems/SkillGemVenomGyre": { "classes": [], "npc": "Siosa" @@ -6941,6 +6991,11 @@ "Duelist" ] }, + "Metadata/Items/Gems/SupportGemOverexertion": { + "classes": [ + "Marauder" + ] + }, "Metadata/Items/Gems/SupportGemGreaterVolley": { "classes": [ "Duelist", @@ -6970,6 +7025,11 @@ "Scion" ] }, + "Metadata/Items/Gems/SupportGemRupture": { + "classes": [ + "Ranger" + ] + }, "Metadata/Items/Gems/SupportGemVileToxins": { "classes": [ "Shadow" @@ -7170,10 +7230,29 @@ "classes": [], "npc": "Petarus and Vanja" }, + "Metadata/Items/Gems/SupportGemOverexertion": { + "classes": [ + "Marauder", + "Templar", + "Duelist", + "Scion" + ], + "npc": "Petarus and Vanja" + }, "Metadata/Items/Gems/SupportGemReturningProjectiles": { "classes": [], "npc": "Petarus and Vanja" }, + "Metadata/Items/Gems/SupportGemRupture": { + "classes": [ + "Ranger", + "Marauder", + "Templar", + "Duelist", + "Scion" + ], + "npc": "Petarus and Vanja" + }, "Metadata/Items/Gems/SupportGemMulticast": { "classes": [], "npc": "Petarus and Vanja" @@ -8510,6 +8589,10 @@ "classes": [], "npc": "Lilly Roth" }, + "Metadata/Items/Gems/SkillGemDivineRetribution": { + "classes": [], + "npc": "Lilly Roth" + }, "Metadata/Items/Gems/SkillGemDominatingBlow": { "classes": [], "npc": "Lilly Roth" @@ -8590,6 +8673,14 @@ "classes": [], "npc": "Lilly Roth" }, + "Metadata/Items/Gems/SkillGemEviscerate": { + "classes": [], + "npc": "Lilly Roth" + }, + "Metadata/Items/Gems/SupportGemExpertRetaliation": { + "classes": [], + "npc": "Lilly Roth" + }, "Metadata/Items/Gems/SkillGemExplosiveArrow": { "classes": [], "npc": "Lilly Roth" @@ -9122,6 +9213,10 @@ "classes": [], "npc": "Lilly Roth" }, + "Metadata/Items/Gems/SupportGemOverexertion": { + "classes": [], + "npc": "Lilly Roth" + }, "Metadata/Items/Gems/SkillGemPenanceBrand": { "classes": [], "npc": "Lilly Roth" @@ -9270,6 +9365,10 @@ "classes": [], "npc": "Lilly Roth" }, + "Metadata/Items/Gems/SupportGemRupture": { + "classes": [], + "npc": "Lilly Roth" + }, "Metadata/Items/Gems/SupportGemSacredWisps": { "classes": [], "npc": "Lilly Roth" @@ -9590,6 +9689,10 @@ "classes": [], "npc": "Lilly Roth" }, + "Metadata/Items/Gems/SkillGemVengefulCry": { + "classes": [], + "npc": "Lilly Roth" + }, "Metadata/Items/Gems/SkillGemVenomGyre": { "classes": [], "npc": "Lilly Roth" @@ -10700,16 +10803,16 @@ "atlas": { "quest_npc": "Commander Kirac", "quest": { - "Metadata/Items/Maps/MapWorldsCrimsonTownship": { + "Metadata/Items/Maps/MapWorldsSiege": { "classes": [] }, - "Metadata/Items/Maps/MapWorldsShipyard": { + "Metadata/Items/Maps/MapWorldsGardens": { "classes": [] }, "Metadata/Items/Maps/MapWorldsBoneCrypt": { "classes": [] }, - "Metadata/Items/Maps/MapWorldsDesertSpring": { + "Metadata/Items/Maps/MapWorldsScriptorium": { "classes": [] } }, diff --git a/common/data/json/vaal-gem-lookup.json b/common/data/json/vaal-gem-lookup.json index 209f13fd..084614e7 100644 --- a/common/data/json/vaal-gem-lookup.json +++ b/common/data/json/vaal-gem-lookup.json @@ -44,7 +44,6 @@ "Metadata/Items/Gems/SkillGemVaalBladeVortex": "Metadata/Items/Gems/SkillGemBladeVortex", "Metadata/Items/Gems/SkillGemVaalEarthquake": "Metadata/Items/Gems/SkillGemEarthquake", "Metadata/Items/Gems/SkillGemVaalBlight": "Metadata/Items/Gems/SkillGemBlight", - "Metadata/Items/Gems/SkillGemVaalAncestralWarchief": "Metadata/Items/Gems/SkillGemAncestralWarchief", "Metadata/Items/Gems/SkillGemVaalSmite": "Metadata/Items/Gems/SkillGemSmite", "Metadata/Items/Gems/SkillGemVaalVenomGyre": "Metadata/Items/Gems/SkillGemVenomGyre", "Metadata/Items/Gems/SkillGemVaalReap": "Metadata/Items/Gems/SkillGemBloodreap", diff --git a/common/data/routes/act-1.txt b/common/data/routes/act-1.txt index e0ef9415..63a6226d 100644 --- a/common/data/routes/act-1.txt +++ b/common/data/routes/act-1.txt @@ -61,7 +61,6 @@ Hand in {quest|a1q2|a1q2} #The Caged Brute {waypoint|1_1_8} #Prisoner's Gate ➞ {enter|1_1_9} #The Ship Graveyard #sub Go down the ledge next to the road -Get {waypoint_get} Find {area|1_1_9a}, place {portal|set} #The Ship Graveyard Cave ➞ {enter|1_1_11_1} #The Cavern of Wrath {waypoint|1_1_town} #Lioneye's Watch diff --git a/common/data/routes/act-9.txt b/common/data/routes/act-9.txt index 0e5be27d..9870d4bb 100644 --- a/common/data/routes/act-9.txt +++ b/common/data/routes/act-9.txt @@ -43,6 +43,7 @@ Hand in {quest|a9q2} #The Ruler of Highgate {waypoint|2_9_8} #The Quarry ➞ {enter|2_9_9} #The Refinery #sub {dir|315} or {dir|45} +Get {crafting} Find and kill {kill|General Adus}, take {quest_text|Trarthan Powder} #sub Go {dir|45} follow cart tracks {logout} diff --git a/seeding/src/build-tree/index.ts b/seeding/src/build-tree/index.ts index 5943e23f..f56d8eb3 100644 --- a/seeding/src/build-tree/index.ts +++ b/seeding/src/build-tree/index.ts @@ -18,7 +18,7 @@ const PASSIVE_TREE_JSON = { "3_24": "https://raw.githubusercontent.com/grindinggear/skilltree-export/fea1986f746d6c8ba9dfc391c755a91c2ef0baed/data.json", "3_25": - "https://raw.githubusercontent.com/grindinggear/skilltree-export/d3cb2819c4bb8b17fdf391efffe75623f1816acc/data.json", + "https://raw.githubusercontent.com/grindinggear/skilltree-export/1b435e5003808bd9ff65d732350e393e8ec07159/data.json", }; export async function buildTemplates() { diff --git a/web/src/components/SkillTreeViewer/index.tsx b/web/src/components/SkillTreeViewer/index.tsx index d3b76db0..303bd90e 100644 --- a/web/src/components/SkillTreeViewer/index.tsx +++ b/web/src/components/SkillTreeViewer/index.tsx @@ -12,6 +12,7 @@ import { calculateBounds, } from "./url-tree-delta"; import classNames from "classnames"; +import React from "react"; import { useEffect, useRef, useState } from "react"; import { HiChevronLeft, HiChevronRight } from "react-icons/hi"; @@ -212,7 +213,12 @@ function NodeTooltip({ return ( - {parts.flatMap((x, i) => (i === 0 ? x : [
, x]))} + {parts.flatMap((x, i) => ( + + {i !== 0 &&
} + {x} +
+ ))}
); }