diff --git a/README.md b/README.md
index fef3aad7..a734d0a0 100644
--- a/README.md
+++ b/README.md
@@ -302,10 +302,10 @@ The UI/UX is quite basic and can be improved in many ways, if you have any ideas
-
-
+
+
- ryanlee-ei
+ rxl3
diff --git a/src/lib/components/ui/tree-node-tooltip/tree-node-tooltip.svelte b/src/lib/components/ui/tree-node-tooltip/tree-node-tooltip.svelte
index 12045089..a746d1fa 100644
--- a/src/lib/components/ui/tree-node-tooltip/tree-node-tooltip.svelte
+++ b/src/lib/components/ui/tree-node-tooltip/tree-node-tooltip.svelte
@@ -9,17 +9,24 @@
} = $props();
-
-
-
-
+
+
+
+
{node.name}
-
+
{#each node.description as description}
-
{description}
+
{description}
{/each}
diff --git a/src/lib/data/nodes.json b/src/lib/data/nodes.json
index 4807013c..062afeb5 100644
--- a/src/lib/data/nodes.json
+++ b/src/lib/data/nodes.json
@@ -15621,8 +15621,8 @@
},
{
"id": "AS31",
- "x": 0.5019545454545455,
- "y": 0.4609614525139665,
+ "x": 0.5014,
+ "y": 0.465,
"kind": "small",
"class": "chronomancer"
},
@@ -15691,295 +15691,295 @@
},
{
"id": "AN41",
- "x": 0.5210545454545455,
- "y": 0.4780614525139665,
+ "x": 0.5199,
+ "y": 0.4798,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN42",
- "x": 0.5204545454545455,
- "y": 0.4868614525139665,
+ "x": 0.519,
+ "y": 0.4878,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN43",
- "x": 0.5273545454545455,
- "y": 0.4980614525139665,
+ "x": 0.5254,
+ "y": 0.4983,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN44",
- "x": 0.5135545454545455,
- "y": 0.4980614525139665,
+ "x": 0.5124,
+ "y": 0.4983,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN45",
- "x": 0.5405545454545455,
- "y": 0.5385614525139665,
+ "x": 0.5385,
+ "y": 0.5365,
"kind": "notable",
"class": "invoker"
},
{
"id": "AS51",
- "x": 0.5240545454545455,
- "y": 0.4790614525139665,
+ "x": 0.5215041486191591,
+ "y": 0.481695179695034,
"kind": "small",
"class": "acolyte"
},
{
"id": "AN51",
- "x": 0.5160045454545455,
- "y": 0.4653914525139665,
+ "x": 0.5152,
+ "y": 0.4685,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN52",
- "x": 0.5190045454545455,
- "y": 0.4572914525139665,
+ "x": 0.5181,
+ "y": 0.4604,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN53",
- "x": 0.4834045454545455,
- "y": 0.4569914525139665,
+ "x": 0.4847,
+ "y": 0.4605,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN54",
- "x": 0.5270045454545455,
- "y": 0.5000614525139665,
+ "x": 0.5255,
+ "y": 0.5005,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN55",
- "x": 0.5365545454545455,
- "y": 0.5286614525139665,
+ "x": 0.5344,
+ "y": 0.5266,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AS61",
- "x": 0.4730545454545455,
- "y": 0.5215614525139665,
+ "x": 0.4744,
+ "y": 0.5196,
"kind": "small",
"class": "titan"
},
{
"id": "AN61",
- "x": 0.4778545454545455,
- "y": 0.5175614525139665,
+ "x": 0.4803,
+ "y": 0.516,
"kind": "notable",
"class": "titan"
},
{
"id": "AN62",
- "x": 0.5031545454545455,
- "y": 0.5433614525139665,
+ "x": 0.504,
+ "y": 0.54,
"kind": "notable",
"class": "titan"
},
{
"id": "AN63",
- "x": 0.4620545454545455,
- "y": 0.4710614525139665,
+ "x": 0.4653,
+ "y": 0.4726,
"kind": "notable",
"class": "titan"
},
{
"id": "AN64",
- "x": 0.4900545454545455,
- "y": 0.4950614525139665,
+ "x": 0.4916,
+ "y": 0.495,
"kind": "notable",
"class": "titan"
},
{
"id": "AN65",
- "x": 0.5046545454545455,
- "y": 0.5187614525139665,
+ "x": 0.5054,
+ "y": 0.5172,
"kind": "notable",
"class": "titan"
},
{
"id": "AN66",
- "x": 0.5120545454545455,
- "y": 0.5540614525139665,
+ "x": 0.512,
+ "y": 0.5506,
"kind": "notable",
"class": "titan"
},
{
"id": "AS71",
- "x": 0.4685545454545455,
- "y": 0.5307614525139665,
+ "x": 0.47006215021329584,
+ "y": 0.5277089259334472,
"kind": "small",
"class": "warbringer"
},
{
"id": "AN71",
- "x": 0.468245454545455,
- "y": 0.5024614525139665,
+ "x": 0.4705,
+ "y": 0.5018,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN72",
- "x": 0.461945454545455,
- "y": 0.4949614525139665,
+ "x": 0.4645,
+ "y": 0.495,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN73",
- "x": 0.486445454545455,
- "y": 0.5397614525139665,
+ "x": 0.4876,
+ "y": 0.537,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN74",
- "x": 0.511845454545455,
- "y": 0.5367614525139665,
+ "x": 0.5117,
+ "y": 0.5345,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AS81",
- "x": 0.5438545454545455,
- "y": 0.5125614525139665,
+ "x": 0.542,
+ "y": 0.512,
"kind": "small",
"class": "deadeye"
},
{
"id": "AN81",
- "x": 0.5079545454545455,
- "y": 0.5087614525139665,
+ "x": 0.5075,
+ "y": 0.508,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN82",
- "x": 0.5219545454545455,
- "y": 0.4984614525139665,
+ "x": 0.5211,
+ "y": 0.4981,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN83",
- "x": 0.5210545454545455,
- "y": 0.5374614525139665,
+ "x": 0.52,
+ "y": 0.5351,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN84",
- "x": 0.52465,
- "y": 0.51793,
+ "x": 0.5232,
+ "y": 0.5166,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN85",
- "x": 0.49855,
- "y": 0.54326,
+ "x": 0.4987,
+ "y": 0.5405,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN86",
"x": 0.5055,
- "y": 0.5264,
+ "y": 0.5243,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN87",
- "x": 0.5417,
- "y": 0.502,
+ "x": 0.54,
+ "y": 0.5011,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AN88",
- "x": 0.5378,
+ "x": 0.5358,
"y": 0.48,
"kind": "notable",
"class": "deadeye"
},
{
"id": "AS91",
- "x": 0.5432545454545455,
- "y": 0.5099614525139665,
+ "x": 0.5439,
+ "y": 0.5096,
"kind": "small",
"class": "pathfinder"
},
{
"id": "AN91",
- "x": 0.5343545454545455,
- "y": 0.5105614525139665,
+ "x": 0.532,
+ "y": 0.5095,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN92",
- "x": 0.5420545454545455,
- "y": 0.4847614525139665,
+ "x": 0.5383,
+ "y": 0.4856,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN93",
- "x": 0.50242545454545455,
- "y": 0.5555614525139665,
+ "x": 0.5016,
+ "y": 0.5516,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN94",
- "x": 0.4565545454545455,
- "y": 0.5304614525139665,
+ "x": 0.4593,
+ "y": 0.528,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN95",
- "x": 0.481,
- "y": 0.541,
+ "x": 0.4821,
+ "y": 0.538,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN96",
- "x": 0.5265,
- "y": 0.49,
+ "x": 0.524,
+ "y": 0.4908,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN97",
- "x": 0.555,
- "y": 0.51056,
+ "x": 0.5515,
+ "y": 0.5095,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AN98",
- "x": 0.5495,
- "y": 0.48476,
+ "x": 0.5453,
+ "y": 0.4856,
"kind": "notable",
"class": "pathfinder"
},
{
"id": "AS101",
- "x": 0.5009545454545455,
- "y": 0.5459614525139665,
+ "x": 0.5008484848484849,
+ "y": 0.541084729981378,
"kind": "small",
"class": "witchhunter"
},
@@ -16041,8 +16041,8 @@
},
{
"id": "AS111",
- "x": 0.4928545454545455,
- "y": 0.5416614525139665,
+ "x": 0.48358437764286544,
+ "y": 0.5381775084542455,
"kind": "small",
"class": "gemling"
},
@@ -16104,106 +16104,106 @@
},
{
"id": "AN145",
- "x": 0.5200394817905247,
- "y": 0.552288967213533,
+ "x": 0.5183,
+ "y": 0.5484,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN119",
- "x": 0.5197575757575758,
- "y": 0.5225791433891993,
+ "x": 0.5188,
+ "y": 0.521,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN120",
- "x": 0.5498181818181819,
- "y": 0.5238594040968343,
+ "x": 0.5466,
+ "y": 0.5225,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN121",
- "x": 0.5055757575757576,
- "y": 0.4797486033519553,
+ "x": 0.5055,
+ "y": 0.4817,
"kind": "notable",
"class": "acolyte"
},
{
"id": "AN122",
- "x": 0.5134545454545455,
- "y": 0.4549581005586592,
+ "x": 0.5126,
+ "y": 0.4579,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN123",
- "x": 0.49066666666666664,
- "y": 0.4550744878957169,
+ "x": 0.4908,
+ "y": 0.4582,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN124",
- "x": 0.5353939393939393,
- "y": 0.5015130353817504,
+ "x": 0.533,
+ "y": 0.5015,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN125",
- "x": 0.5521212121212121,
- "y": 0.5195530726256983,
+ "x": 0.549,
+ "y": 0.519,
"kind": "notable",
"class": "invoker"
},
{
"id": "AN138",
- "x": 0.46716226601254435,
- "y": 0.4833001082285754,
+ "x": 0.4705,
+ "y": 0.4844,
"kind": "notable",
"class": "titan"
},
{
"id": "AN139",
- "x": 0.4918383040732309,
- "y": 0.5095517854164785,
+ "x": 0.4934,
+ "y": 0.509,
"kind": "notable",
"class": "titan"
},
{
"id": "AN140",
- "x": 0.4553901014413521,
- "y": 0.502082496160477,
+ "x": 0.4586,
+ "y": 0.502,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN141",
- "x": 0.45806516423489146,
- "y": 0.47866305983641017,
+ "x": 0.4609,
+ "y": 0.4796,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN142",
- "x": 0.46561828271076744,
- "y": 0.47866305983641017,
+ "x": 0.4683,
+ "y": 0.4796,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN143",
- "x": 0.4865467151543402,
- "y": 0.5268617707227153,
+ "x": 0.4875,
+ "y": 0.5251,
"kind": "notable",
"class": "warbringer"
},
{
"id": "AN144",
- "x": 0.5118811333755074,
- "y": 0.5297325403366332,
+ "x": 0.5117,
+ "y": 0.5279,
"kind": "notable",
"class": "warbringer"
}
diff --git a/src/lib/data/nodes_desc.json b/src/lib/data/nodes_desc.json
index b3aab11e..9c3ab4ed 100644
--- a/src/lib/data/nodes_desc.json
+++ b/src/lib/data/nodes_desc.json
@@ -10567,7 +10567,14 @@
},
"AN1": {
"name": "Sanguimancy",
- "stats": ["Grants Skill: Life Remnants", "Skills gain a Base Life Cost equal to Base Mana Cost"]
+ "stats": [
+ "Grants Skill: Life Remnants",
+ "Skills gain a Base Life Cost equal to Base Mana Cost"
+ ],
+ "info": [
+ "title:Life Remnants",
+ "Drinks the blood of your enemies to restore your Life. While active, enemies you kill have a chance to spawn a Life Remnant, and Critically Hitting a target spawns a Life Remnant every few seconds. Picking up a Life Remnant grants you Life which can Overflow maximum Life."
+ ]
},
"AN2": {
"name": "Crimson Power",
@@ -10657,11 +10664,19 @@
"stats": [
"Grants Skill: Summon Infernal Hound",
"20% of Damage from Hits is taken from your Hellhound's Life before you"
+ ],
+ "info": [
+ "title:Summon Infernal Hound",
+ "Summons a Reviving Infernal Hound which Ignites enemies near it. The Hound takes a portion of damage from Hits for you."
]
},
"AN12": {
"name": "Demonic Possession",
- "stats": ["Grants Skill: Demon Form"]
+ "stats": ["Grants Skill: Demon Form"],
+ "info": [
+ "title: Demon Form",
+ "Shapeshift into a demon, vastly boosting the power of your Spells. You gain Demonflame every second you remain in demon form, causing your Life to be lost at an ever-increasing rate. Revert to human form if you reach 1 Life, use a Skill that isn't a Spell, or reactivate this Skill."
+ ]
},
"AN13": {
"name": "Pyromantic Pact",
@@ -10719,6 +10734,10 @@
"stats": [
"Grants Skill: Elemental Storm",
"Trigger Elemental Storm on Critical Hit with Spells"
+ ],
+ "info": [
+ "title:Elemental Storm",
+ "Creates a stationary Fire, Cold or Lightning storm at a target location for a duration, based on the highest Elemental Damage type for the Hit that Triggered the storm. Hits which do not deal Elemental Damage will not Trigger the storm."
]
},
"AN22": {
@@ -10758,14 +10777,19 @@
},
"AN29": {
"name": "Constant Gale",
- "stats": [
- "You have Arcane Surge",
+ "stats": ["You have Arcane Surge"],
+ "info": [
+ "title:Arcane Surge",
"Arcane Surge grants 10% more Cast Speed and 20% more Mana Regeneration Rate."
]
},
"AN30": {
"name": "Force of Will",
- "stats": ["1% increased Effect of Arcane Surge on you per 15 maximum Mana"]
+ "stats": ["1% increased Effect of Arcane Surge on you per 15 maximum Mana"],
+ "info": [
+ "title:Arcane Surge",
+ "Arcane Surge grants 10% more Cast Speed and 20% more Mana Regeneration Rate."
+ ]
},
"AS31": {
"name": "AS31",
@@ -10773,15 +10797,24 @@
},
"AN31": {
"name": "Footprints in the Sand",
- "stats": ["Grants Skill: Temporal Rift"]
+ "stats": ["Grants Skill: Temporal Rift"],
+ "info": [
+ "title:Temporal Rift",
+ "Passively leaves afterimages of your recent past. Cast the Spell to return to the oldest afterimage, teleporting to that location and resetting your Life, Mana and Energy Shield to the values they had at the time."
+ ]
},
"AN32": {
"name": "Ultimate Command",
- "stats": ["Grants Skill: Time Freeze"]
+ "stats": ["Grants Skill: Time Freeze"],
+ "info": [
+ "title:Time Freeze",
+ "Releases a large wave that stops time for all affected enemies for a duration. Duration is lower the more times the enemy has had time stopped for them."
+ ]
},
"AN33": {
"name": "Unbound Encore",
- "stats": ["Grants Skill: Time Snap"]
+ "stats": ["Grants Skill: Time Snap"],
+ "info": ["title:Time Snap", "Manipulates time, resetting the cooldowns of your other Skills."]
},
"AN34": {
"name": "Now and Again",
@@ -10809,7 +10842,11 @@
},
"AN41": {
"name": "Faith is a Choice",
- "stats": ["Grants Skill: Meditate"]
+ "stats": ["Grants Skill: Meditate"],
+ "info": [
+ "title:Meditate",
+ "Channels to Recharge Energy Shield. Can overcharge your Energy Shield up to double its normal maximum. Channeling ends when you take damage or your Energy Shield is double its normal maximum. This skill cannot be used if your Energy Shield is already double its normal maximum or you have no maximum Energy Shield."
+ ]
},
"AN42": {
"name": "I am the Blizzard...",
@@ -10827,13 +10864,21 @@
},
"AN44": {
"name": "...and I Shall Rage",
- "stats": ["Grants Skill: Unbound Avatar"]
+ "stats": ["Grants Skill: Unbound Avatar"],
+ "info": [
+ "title:Unbound Avatar",
+ "Gane Unbound Fury by inflicting Elemental Ailments with Hits on enemies. Once you reach maximum Unbound Fury, consume it to become Unbound for a duration, vastly augmenting your Elemental prowess."
+ ]
},
"AN45": {
"name": "...and Scatter Them to the Winds",
"stats": [
"Grants Skill: Elemental Expression",
"Trigger Elemental Expression on Melee Critical Hit"
+ ],
+ "info": [
+ "title:Elemental Expression",
+ "Creates a fiery explosion, an arcing bolt of lightning, or an icy wave of projectiles. The chance for an explosion is propertional to your Strength, for a bolt proportional to your Dexterity, and for a wave proportional to your Intelligence."
]
},
"AS51": {
@@ -10854,7 +10899,16 @@
},
"AN54": {
"name": "Waking Dream",
- "stats": ["Grants Skill: Into the Breach"]
+ "stats": ["Grants Skill: Into the Breach"],
+ "info": [
+ "title:Into the Breach",
+ "Creates a Breach around you, allowing you to see nearby Flames of Chayula. You are considered to be in a Breach while this skill is active.",
+ "title:Flame of Chayula",
+ "Collecting Flames of Chayula grants the following bonuses:",
+ "Red Flames of Chayula Leech 7% of your maximum Life to you",
+ "Blue Flames of Chayula Leech 7% of your maximum Mana to you",
+ "Purple Flames of Chayula provide a stacking Buff granting 7% of Damage as Chaos damage for 5 seconds, and stacks up to 10 times."
+ ]
},
"AN55": {
"name": "Grasp of the Void",
@@ -10874,30 +10928,38 @@
},
"AN63": {
"name": "Ancestral Empowerment",
- "stats": [
- "Every second Slam Skill you use yourself is Ancestrally Boosted",
+ "stats": ["Every second Slam Skill you use yourself is Ancestrally Boosted"],
+ "info": [
+ "title:Ancestral Boost",
"An Ancestrally Boosted Slam has 20% more damage and area of effect."
]
},
"AN64": {
"name": "Earthbreaker",
- "stats": [
- "20% chance for Slam Skills you use yourself to cause Aftershocks",
+ "stats": ["20% chance for Slam Skills you use yourself to cause Aftershocks"],
+ "info": [
+ "title:Aftershocks",
"Aftershocks are bursts of area damage that occur after the initial impact of the skill causing them. If not otherwise specified, the Aftershock will deal the same damage as the initial impact, in the same area."
]
},
"AN65": {
"name": "Crushing Impacts",
- "stats": [
- "Your Hits are Crushing Blows",
- "Crushing Blows cause a Heavy Stun on enemies that are Primed for Stun."
+ "stats": ["Your Hits are Crushing Blows"],
+ "info": [
+ "title:Crushing Blows",
+ "Crushing Blows cause a Heavy Stun on enemies that are Primed for Stun.",
+ "title:Primed for Stun",
+ "Normal enemies are Primed for Stun when they have at least 40% Heavy Stun buildup. Magic enemies are instead Primed at 60% buildup, Rare at 70%, and Unique at 80%."
]
},
"AN66": {
"name": "Surprising Strength",
- "stats": [
- "40% more Damage against Heavy Stunned Enemies",
- "Heavy Stunned enemies cannot act and count as Immobilised. Physical and Melee Damage each cause 50% more Heavy Stun buildup, which is multiplicative with each other."
+ "stats": ["40% more Damage against Heavy Stunned Enemies"],
+ "info": [
+ "title:Heavy Stun",
+ "Hitting an enemy builds towards a Heavy Stun based on the damage dealt. Different enemies have different Heavy Stun thresholds and durations, with very large monsters having a high Heavy Stun Threshold. Players cannot be Heavy Stunned.",
+ "While an enemy is Heavy Stunned, they cannot act and count as Immobilised.",
+ "Physical and Melee Damage each cause 50% more Heavy Stun buildup. These bonuses are multiplicative with each other."
]
},
"AS71": {
@@ -10909,11 +10971,19 @@
"stats": [
"Grants Skill: Ancestral Spirits",
"Trigger Ancestral Spirits when you Summon a Totem"
+ ],
+ "info": [
+ "title:Ancestral Spirits",
+ "Each of your Totems will summon an Ancestral Spirit Minion to fight for you. If the Totem that summoned the Minion dies then the Ancestral Spirit will too."
]
},
"AN72": {
"name": "Jade Heritage",
- "stats": ["Grants Skill: Encased in Jade", "Gain a stack of Jade every second"]
+ "stats": ["Grants Skill: Encased in Jade", "Gain a stack of Jade every second"],
+ "info": [
+ "title:Encase in Jade",
+ "Consumes all stacks of Jade to grant a Buff for a duration that absorbs all Damage from Hits, up to a maximum based on the amount of Jade consumed. While encased you cannot move or perform actions."
+ ]
},
"AN73": {
"name": "Warcaller’s Bellow",
@@ -10939,9 +11009,9 @@
},
"AN83": {
"name": "Gathering Winds",
- "stats": [
- "Gain Tailwind on Skill use",
- "Lose all Tailwind when Hit",
+ "stats": ["Gain Tailwind on Skill use", "Lose all Tailwind when Hit"],
+ "info": [
+ "title:Tailwind",
"Tailwind is a stacking Buff which grants 1% increased Movement Speed, 3% increased Skill Speed, and 15% increased Evasion Rating per stack for 10 seconds, refreshing whenever you gain another stack. Maximum 10 stacks."
]
},
@@ -10975,7 +11045,7 @@
},
"AS91": {
"name": "AS91",
- "stats": ["Pathffinder small"]
+ "stats": ["Pathfinder small"]
},
"AN91": {
"name": "Contagious Contamination",
@@ -11027,19 +11097,22 @@
},
"AN101": {
"name": "Weapon Master",
- "stats": ["Grants 20 Weapon Set Skill Points"]
+ "stats": ["20 Passive Skill Points become Weapon Set Skill Points"]
},
"AN102": {
- "name": "Pitless Killer",
- "stats": [
- "Culling Strike",
+ "name": "Pitiless Killer",
+ "stats": ["Culling Strike"],
+ "info": [
+ "title:Culling Strike",
"Culling Strikes kill Normal enemies if their Life is at 30% or below. Magic enemies are instead killed at 20%, Rare at 10% and Unique at 5%. These thresholds are checked before the damage of the Hit is applied."
]
},
"AN103": {
- "name": "Decimating Strike",
- "stats": [
- "Hits against Full Life Enemies remove between 5% and 30% of Life, before the damage of the Hit is applied"
+ "name": "Judge, Jury, and Executioner",
+ "stats": ["Decimating Strike"],
+ "info": [
+ "title:Decimating Strike",
+ "Hits against Full Life Enemies remove between 5% and 30% of Life, before the damage of the Hit is applied."
]
},
"AN104": {
@@ -11047,17 +11120,28 @@
"stats": [
"Enemies have Maximum Concentration equal to 40% of their Maximum Life",
"Break enemy Concentration on Hit equal to 100% of Damage Dealt",
- "Enemies regain 10% of Concentration every second if they haven't lost Concentration in the past 5 seconds",
+ "Enemies regain 10% of Concentration every second if they haven't lost Concentration in the past 5 seconds"
+ ],
+ "info": [
+ "title:Concentration",
"Enemies have less Cooldown Recovery Rate the lower their Concentration, scaling down to 50% less Cooldown Recovery Rate when Concentration is 0%."
]
},
"AN105": {
"name": "No Mercy",
- "stats": ["Deal up to 30% more Damage to Enemies based on their missing Concentration"]
+ "stats": ["Deal up to 30% more Damage to Enemies based on their missing Concentration"],
+ "info": [
+ "title:Concentration",
+ "Enemies have less Cooldown Recovery Rate the lower their Concentration, scaling down to 50% less Cooldown Recovery Rate when Concentration is 0%."
+ ]
},
"AN106": {
"name": "Obsessive Rituals",
- "stats": ["Grants Skills: Sorcery Ward", "50% less Armour and Evasion Rating"]
+ "stats": ["Grants Skill: Sorcery Ward", "50% less Armour and Evasion Rating"],
+ "info": [
+ "title:Sorcery Ward",
+ "Passively manifests a protective barrier which takes Elemental Damage from Hits for you until depleted. The barrier instantly recharges to its full value after a short time after it stops taking damage or is fully depleted."
+ ]
},
"AN107": {
"name": "Ceremonial Ablution",
@@ -11116,7 +11200,14 @@
},
"AN119": {
"name": "Lucid Dreaming",
- "stats": ["Effect and Duration of Flames of Chayula on You is Double"]
+ "stats": ["Effect and Duration of Flames of Chayula on You is Double"],
+ "info": [
+ "title:Flame of Chayula",
+ "Collecting Flames of Chayula grants the following bonuses:",
+ "Red Flames of Chayula Leech 7% of your maximum Life to you",
+ "Blue Flames of Chayula Leech 7% of your maximum Mana to you",
+ "Purple Flames of Chayula provide a stacking Buff granting 7% of Damage as Chaos damage for 5 seconds, and stacks up to 10 times."
+ ]
},
"AN120": {
"name": "Embrace the Darkness",
diff --git a/src/lib/index.ts b/src/lib/index.ts
index be8bcb22..e7f97bf9 100644
--- a/src/lib/index.ts
+++ b/src/lib/index.ts
@@ -21,6 +21,7 @@ export interface TreeNodeData {
name: string;
class: string;
description: string[];
+ extraInfo: string[];
}
export interface NodeMap {
@@ -47,7 +48,7 @@ export function loadData(): TreeData {
return acc;
}
- const { name, stats: description } = (nodeData as NodeDataJSON)[node.id];
+ const { name, stats: description, info } = (nodeData as NodeDataJSON)[node.id];
return {
...acc,
@@ -60,7 +61,8 @@ export function loadData(): TreeData {
position: {
x: node.x,
y: node.y
- }
+ },
+ extraInfo: info
}
};
}, {}) as NodeMap;
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 02524491..41b900ab 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -10,6 +10,6 @@
margin: 0;
background-color: black;
color: #e4dfd7;
- font-family: 'Fontin SmallCaps', sans-serif;
+ font-family: 'Fontin', sans-serif;
}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index c5b79bb9..6cdce27e 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -169,7 +169,7 @@
tooltipY += -tooltipTopInContainer + 20;
}
- if (tooltipRect.x >= containerRect.x) {
+ if (tooltipRect.width >= containerRect.width) {
tooltipX = 0;
}
}
@@ -638,7 +638,7 @@
>
{/if}
-
+
+ {#if tooltipNode.extraInfo && tooltipNode.extraInfo.length > 0}
+
+ {#each tooltipNode.extraInfo as infoLine}
+ {#if infoLine.startsWith('title:')}
+
+ {infoLine.split('title:')[1]}
+
+ {:else}
+
+ {infoLine}
+
+ {/if}
+ {/each}
+
+ {/if}
{/if}