From fac2c54da960799545e6ddde79a828f82dde4034 Mon Sep 17 00:00:00 2001 From: hppeng Date: Fri, 1 Jul 2022 01:23:06 -0700 Subject: [PATCH] Archer atree --- js/atree.js | 24 +- js/atree_constants.js | 1688 ++++++------ js/atree_constants_min.js | 5104 +------------------------------------ js/damage_calc.js | 13 +- js/display.js | 2 +- 5 files changed, 834 insertions(+), 5997 deletions(-) diff --git a/js/atree.js b/js/atree.js index 6ebbcdc..dcc060e 100644 --- a/js/atree.js +++ b/js/atree.js @@ -55,7 +55,8 @@ convert_spell_conv: { } raw_stat: { type: "raw_stat" - toggle: Optional[bool] // default: false + toggle: Optional[bool | str] // default: false; true means create anon. toggle, + // string value means bind to (or create) named button bonuses: List[stat_bonus] } stat_bonus: { @@ -443,24 +444,25 @@ const atree_collect_spells = new (class extends ComputeNode { for (const [abil_id, abil] of atree_merged.entries()) { // TODO: Possibly, make a better way for detecting "spell abilities"? if (abil.effects.length == 0) { continue; } + + let ret_spell = deepcopy(abil.effects[0]); // NOTE: do not mutate results of previous steps! let has_spell_def = false; for (const effect of abil.effects) { if (effect.type === 'replace_spell') { has_spell_def = true; - break; - } - } - if (!has_spell_def) { continue; } - - let ret_spell = deepcopy(abil.effects[0]); // NOTE: do not mutate results of previous steps! - const base_spell_id = ret_spell.base_spell; - for (const effect of abil.effects) { - switch (effect.type) { - case 'replace_spell': // replace_spell just replaces all (defined) aspects. for (const key in effect) { ret_spell[key] = effect[key]; } + } + } + if (!has_spell_def) { continue; } + + const base_spell_id = ret_spell.base_spell; + for (const effect of abil.effects) { + switch (effect.type) { + case 'replace_spell': + // Already handled above. continue; case 'add_spell_prop': { const { base_spell, target_part = null, cost = 0} = effect; diff --git a/js/atree_constants.js b/js/atree_constants.js index 37be79a..c267a1f 100644 --- a/js/atree_constants.js +++ b/js/atree_constants.js @@ -12,18 +12,17 @@ const atrees = { "col": 6 }, "properties": { - "duration": 60 + "charges": 2, + "duration": 60, + "aoe": 5000 }, "effects": [ { "type": "replace_spell", "name": "Arrow Shield", "cost": 30, - "display_text": "Max Damage", "base_spell": 4, - "spell_type": "damage", - "scaling": "spell", - "display": "", + "display": "Total Damage", "parts": [ { "name": "Shield Damage", @@ -41,7 +40,6 @@ const atrees = { } ] }, - { "display_name": "Escape", "desc": "Throw yourself backward to avoid danger. (Hold shift while escaping to cancel)", @@ -61,18 +59,9 @@ const atrees = { "type": "replace_spell", "name": "Escape", "cost": 25, - "display_text": "Max Damage", "base_spell": 2, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Total Damage", - "type": "total", - "hits": {} - } - ] + "display": "", + "parts": [] }] }, { @@ -94,7 +83,6 @@ const atrees = { "type": "replace_spell", "name": "Arrow Bomb", "cost": 50, - "display_text": "Average Damage", "base_spell": 3, "spell_type": "damage", "scaling": "spell", @@ -108,9 +96,7 @@ const atrees = { { "name": "Total Damage", "type": "total", - "hits": { - "Arrow Bomb": 1 - } + "hits": { "Arrow Bomb": 1 } } ] }] @@ -128,17 +114,25 @@ const atrees = { "col": 4 }, "properties": {}, - "effects": [{ - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Bomb", - "cost": 0, - "multipliers": [100, 0, 0, 0, 0, 0] - }] + "effects": [ + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Heart Shatter", + "multipliers": [100, 0, 0, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Total Damage", + "hits": { "Heart Shatter": 1 } + } + ] }, { "display_name": "Fire Creep", "desc": "Arrow Bomb will leak a trail of fire for 6s, Damaging enemies that walk into it every 0.4s.", + "base_abil": "Arrow Bomb", "parents": ["Phantom Ray", "Fire Mastery", "Bryophyte Roots"], "dependencies": [], "blockers": [], @@ -148,140 +142,113 @@ const atrees = { "col": 6 }, "properties": { - "aoe": 0.8, - "duration": 6 + "aoe": 0.8, + "duration": 6 }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Fire Creep", - "cost": 0, - "multipliers": [30, 0, 0, 0, 20, 0] - }, - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Fire Creep": 15 + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Fire Creep", + "multipliers": [30, 0, 0, 0, 20, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Total Burn Damage", + "hits": { "Fire Creep": 15 } } - } ] }, { "display_name": "Bryophyte Roots", "desc": "When you hit an enemy with Arrow Storm, create an area that slows them down and deals damage every 0.4s.", + "base_abil": "Arrow Storm", "archetype": "Trapper", "archetype_req": 1, "parents": ["Fire Creep", "Earth Mastery"], "dependencies": ["Arrow Storm"], "blockers": [], "cost": 2, - "display": { - "row": 16, - "col": 8 - }, + "display": { "row": 16, "col": 8 }, "properties": { - "aoe": 2, - "duration": 5, - "slowness": 0.4 - }, + "aoe": 2, + "duration": 5 + }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Bryophyte Roots", - "cost": 0, - "multipliers": [40, 20, 0, 0, 0, 0] - } + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Bryophyte Roots", + "cost": 0, + "multipliers": [40, 20, 0, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Total Roots Damage", + "hits": { "Bryophyte Roots": 12 } + } ] }, { "display_name": "Nimble String", "desc": "Arrow Storm throw out +6 arrows per stream and shoot twice as fast.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Storm", "parents": ["Thunder Mastery", "Arrow Rain"], "dependencies": ["Arrow Storm"], "blockers": ["Phantom Ray"], "cost": 2, - "display": { - "row": 15, - "col": 2 - }, - "properties": { - "shootspeed": 2 - }, + "display": { "row": 15, "col": 2 }, + "properties": {}, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Arrow", - "cost": 0, - "multipliers": [-15, 0, 0, 0, 0, 0] - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Stream", - "cost": 0, - "hits": { - "Single Arrow": 6 + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Single Arrow", + "multipliers": [-15, 0, 0, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Single Stream", + "hits": { "Single Arrow": 6 } } - } - ] + ] }, { "display_name": "Arrow Storm", - "desc": "Shoot two stream of 8 arrows, dealing significant damage to close mobs and pushing them back.", - "archetype": "", - "archetype_req": 0, + "desc": "Shoot a stream of 8 arrows, dealing significant damage to close mobs and pushing them back.", "parents": ["Double Shots", "Cheaper Escape"], "dependencies": [], "blockers": [], "cost": 1, - "display": { - "row": 9, - "col": 2 - }, - "properties": { - "aoe": 0, - "range": 16 - }, + "display": { "row": 9, "col": 2 }, + "properties": { "range": 16 }, "effects": [ - { - "type": "replace_spell", - "name": "Arrow Storm", - "cost": 40, - "display_text": "Max Damage", - "base_spell": 1, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [30, 0, 10, 0, 0, 0] - }, - { - "name": "Single Stream", - "type": "total", - "hits": { - "Single Arrow": 8 - } - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Single Stream": 1 - } + { + "type": "replace_spell", + "name": "Arrow Storm", + "cost": 40, + "base_spell": 1, + "spell_type": "damage", + "scaling": "spell", + "display": "Total Damage", + "parts": [ + { + "name": "Single Arrow", + "multipliers": [30, 0, 10, 0, 0, 0] + }, + { + "name": "Single Stream", + "hits": { "Single Arrow": 8 } + }, + { + "name": "Total Damage", + "hits": { "Single Stream": 1 } + } + ] } - ] - } ] }, { @@ -289,6 +256,7 @@ const atrees = { "desc": "Your protective arrows from Arrow Shield will become sentient bows, dealing damage up to 8 times each to nearby enemies. (Arrow Shield will no longer push nearby enemies)", "archetype": "Boltslinger", "archetype_req": 3, + "base_abil": "Arrow Shield", "parents": ["Triple Shots", "Frenzy"], "dependencies": ["Arrow Shield"], "blockers": [], @@ -307,11 +275,7 @@ const atrees = { { "type": "replace_spell", "name": "Guardian Angels", - "cost": 30, - "display_text": "Total Damage Average", "base_spell": 4, - "spell_type": "damage", - "scaling": "spell", "display": "Total Damage", "parts": [ { @@ -339,10 +303,8 @@ const atrees = { }, { "display_name": "Windy Feet", - "base_abil": "Escape", "desc": "When casting Escape, give speed to yourself and nearby allies.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Escape", "parents": ["Arrow Storm"], "dependencies": [], "blockers": [], @@ -357,11 +319,12 @@ const atrees = { }, "effects": [{ "type": "stat_bonus", + "toggle": "Windy Feet", "bonuses": [ { - "type": "stat", - "name": "spd", - "value": 20 + "type": "stat", + "name": "spd", + "value": 20 } ] }] @@ -371,6 +334,7 @@ const atrees = { "desc": "When you hit the ground with Arrow Bomb, leave a Trap that damages enemies. (Max 2 Traps)", "archetype": "Trapper", "archetype_req": 2, + "base_abil": "Arrow Bomb", "parents": ["Bryophyte Roots"], "dependencies": [], "blockers": [], @@ -380,24 +344,22 @@ const atrees = { "col": 8 }, "properties": { - "aoe": 7, - "traps": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Basaltic Trap", - "cost": 0, - "multipliers": [140, 30, 0, 0, 30, 0] - } - ] + "aoe": 7, + "traps": 2 }, + "effects": [ + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Basaltic Trap", + "multipliers": [140, 30, 0, 0, 30, 0] + } + ] + }, { "display_name": "Windstorm", - "desc": "Arrow Storm shoot +1 stream of arrows, effectively doubling its damage.", - "archetype": "", - "archetype_req": 0, + "desc": "Arrow Storm shoot +1 stream of arrows, and each stream shoots +2 arrows, effectively doubling its damage.", + "base_abil": "Arrow Storm", "parents": ["Guardian Angels", "Cheaper Arrow Storm"], "dependencies": [], "blockers": ["Phantom Ray"], @@ -405,42 +367,37 @@ const atrees = { "display": { "row": 21, "col": 1 - }, + }, "properties": {}, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Arrow", - "cost": 0, - "multipliers": [-10, 0, -2, 0, 0, 2] - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Single Stream": 1 + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Single Arrow", + "multipliers": [-10, 0, -2, 0, 0, 2] + }, + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Total Damage", + "hits": { "Single Stream": 1 } + }, + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Single Stream", + "cost": 0, + "hits": { "Single Arrow": 2 } } - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Stream", - "cost": 0, - "hits": { - "Single Arrow": 2 - } - } ] - }, + }, { "display_name": "Grappling Hook", "base_abil": "Escape", "desc": "When casting Escape, throw a hook that pulls you when hitting a block. If you hit an enemy, pull them towards you instead. (Escape will not throw you backward anymore)", "archetype": "Trapper", "archetype_req": 0, + "base_abil": "Escape", "parents": ["Focus", "More Shields", "Cheaper Arrow Storm"], "dependencies": [], "blockers": ["Escape Artist"], @@ -450,16 +407,16 @@ const atrees = { "col": 5 }, "properties": { - "range": 20 - }, - "effects": [ - ] + "range": 26 }, + "effects": [] + }, { "display_name": "Implosion", "desc": "Arrow bomb will pull enemies towards you. If a trap is nearby, it will pull them towards it instead. Increase Heart Shatter's damage.", "archetype": "Trapper", "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["Grappling Hook", "More Shields"], "dependencies": [], "blockers": [], @@ -467,18 +424,17 @@ const atrees = { "display": { "row": 22, "col": 6 - }, + }, "properties": {}, "effects": [ { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Bomb", - "cost": 0, - "multipliers": [40, 0, 0, 0, 0, 0] + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Heart Shatter", + "multipliers": [40, 0, 0, 0, 0, 0] } ] - }, + }, { "display_name": "Twain's Arc", "desc": "When you have 2+ Focus, holding shift will summon the Twain's Arc. Charge it up to shoot a destructive long-range beam. (Damage is dealt as Main Attack Damage)", @@ -491,65 +447,61 @@ const atrees = { "display": { "row": 25, "col": 4 - }, - "properties": { - "range": 64, - "focusReq": 2 - }, - "effects": [ - - { - "type": "replace_spell", - "name": "Twain's Arc", - "cost": 0, - "display_text": "Twain's Arc", - "base_spell": 5, - "spell_type": "damage", - "scaling": "melee", - "display": "Twain's Arc Damage", - "parts": [ - { - "name": "Twain's Arc Damage", - "type": "damage", - "multipliers": [200, 0, 0, 0, 0, 0] - } - ] - } - ] }, + "properties": { + "range": 64, + "focusReq": 2 + }, + "effects": [ + { + "type": "replace_spell", + "name": "Twain's Arc", + "base_spell": 5, + "scaling": "melee", + "use_atkspd": false, + "display": "Single Shot", + "parts": [ + { + "name": "Single Shot", + "type": "damage", + "multipliers": [200, 0, 0, 0, 0, 0] + } + ] + } + ] + }, { "display_name": "Fierce Stomp", "desc": "When using Escape, hold shift to quickly drop down and deal damage.", "archetype": "Boltslinger", "archetype_req": 0, + "base_abil": "Escape", "parents": ["Refined Gunpowder", "Traveler"], "dependencies": [], "blockers": [], "cost": 2, - "display": { - "row": 26, - "col": 1 - }, + "display": { "row": 26, "col": 1 }, "properties": { - "aoe": 4 + "aoe": 4 }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Fierce Stomp", - "cost": 0, - "multipliers": [100, 0, 0, 0, 0, 0] - }, - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Fierce Stomp": 1 + { + "type": "add_spell_prop", + "base_spell": 2, + "target_part": "Fierce Stomp", + "cost": 0, + "multipliers": [100, 0, 0, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 2, + "target_part": "Stomp Damage", + "cost": 0, + "hits": { + "Fierce Stomp": 1 + }, + "display": "Stomp Damage" } - } ] }, { @@ -561,22 +513,18 @@ const atrees = { "dependencies": ["Fire Creep"], "blockers": [], "cost": 1, - "display": { - "row": 26 , - "col": 5 - }, + "display": { "row": 26, "col": 5 }, "properties": { - "duration": 2, - "aoe": 0.4 + "duration": 2, + "aoe": 0.4 }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Fire Creep", - "cost": 0, - "multipliers": [10, 0, 0, 0, 5, 0] - } + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Fire Creep", + "multipliers": [10, 0, 0, 0, 5, 0] + } ] }, { @@ -588,39 +536,32 @@ const atrees = { "dependencies": [], "blockers": [], "cost": 2, - "display": { - "row": 28, - "col": 0 - }, + "display": { "row": 28, "col": 0 }, "properties": { - "cooldown": 2 - }, - "effects": [ - - ] + "cooldown": 2 }, + "effects": [] + }, { "display_name": "Shocking Bomb", "desc": "Arrow Bomb will not be affected by gravity, and all damage conversions become Thunder.", "archetype": "Sharpshooter", "archetype_req": 5, + "base_abil": "Arrow Bomb", "parents": ["Twain's Arc", "Better Arrow Shield", "Homing Shots"], "dependencies": ["Arrow Bomb"], "blockers": [], "cost": 2, - "display": { - "row": 28, - "col": 4 - }, + "display": { "row": 28, "col": 4 }, "properties": { - "gravity": 0 + "gravity": 0 }, "effects": [ - { - "type": "convert_spell_conv", - "target_part": "all", - "conversion": "Thunder" - } + { + "type": "convert_spell_conv", + "target_part": "all", + "conversion": "Thunder" + } ] }, { @@ -628,6 +569,7 @@ const atrees = { "desc": "Your Traps will give you 4 Mana per second when you stay close to them.", "archetype": "Trapper", "archetype_req": 5, + "base_abil": "Arrow Bomb", "parents": ["More Traps", "Better Arrow Shield"], "dependencies": ["Fire Creep"], "blockers": [], @@ -637,24 +579,23 @@ const atrees = { "col": 8 }, "properties": { - "range": 12, - "manaRegen": 4 + "range": 12, + "manaRegen": 4 }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Basaltic Trap", - "cost": 10, - "multipliers": [0, 0, 0, 0, 0, 0] - } + { + "type": "add_spell_prop", + "base_spell": 3, + "cost": 10 + } ] }, { "display_name": "Escape Artist", - "desc": "When casting Escape, release 100 arrows towards the ground.", + "desc": "When casting Escape, release 120 arrows towards the ground.", "archetype": "Boltslinger", "archetype_req": 0, + "base_abil": "Escape", "parents": ["Better Guardian Angels", "Leap"], "dependencies": [], "blockers": ["Grappling Hook"], @@ -663,16 +604,20 @@ const atrees = { "row": 31, "col": 0 }, - "properties": { - }, + "properties": {}, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Escape Artist", - "cost": 0, - "multipliers": [30, 0, 10, 0, 0, 0] - } + { + "type": "add_spell_prop", + "base_spell": 2, + "target_part": "Per Arrow", + "multipliers": [30, 0, 10, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "target_part": "Max Damage (Escape Artist)", + "hits": { "Per Arrow": 120 }, + "display": "Max Damage (Escape Artist)" + } ] }, { @@ -684,100 +629,84 @@ const atrees = { "dependencies": ["Focus"], "blockers": [], "cost": 2, - "display": { - "row": 31, - "col": 5 - }, - "properties": { - "focus": 1, - "timer": 5 - }, - "effects": [{ - "type": "stat_bonus", - "bonuses": [ - { - "type": "stat", - "name": "damPct", - "value": 50 - } - ] - }] + "display": { "row": 31, "col": 5 }, + "properties": {}, + "effects": [] }, { "display_name": "Call of the Hound", "desc": "Arrow Shield summon a Hound that will attack and drag aggressive enemies towards your traps.", "archetype": "Trapper", "archetype_req": 0, + "base_abil": "Arrow Shield", "parents": ["Initiator", "Cheaper Arrow Storm (2)"], "dependencies": ["Arrow Shield"], "blockers": [], "cost": 2, - "display": { - "row": 32, - "col": 7 - }, - "properties": { - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Call of the Hound", - "cost": 0, - "multipliers": [40, 0, 0, 0, 0, 0] - } - ] + "display": { "row": 32, "col": 7 }, + "properties": {}, + "effects": [ + { + "type": "add_spell_prop", + "base_spell": 4, + "target_part": "Hound Damage", + "multipliers": [40, 0, 0, 0, 0, 0] + } + ] }, { "display_name": "Arrow Hurricane", "desc": "Arrow Storm will shoot +2 stream of arrows.", "archetype": "Boltslinger", "archetype_req": 8, + "base_abil": "Arrow Storm", "parents": ["Precise Shot", "Escape Artist"], "dependencies": [], "blockers": ["Phantom Ray"], "cost": 2, - "display": { - "row": 33, - "col": 0 - }, + "display": { "row": 33, "col": 0 }, "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Single Stream": 2 + "effects": [ + { + "type": "add_spell_prop", + "base_spell": 1, + "target_part": "Total Damage", + "hits": { "Single Stream": 2 } } - } - ] + ] }, { "display_name": "Geyser Stomp", "desc": "Fierce Stomp will create geysers, dealing more damage and vertical knockback.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Escape", "parents": ["Shrapnel Bomb"], "dependencies": ["Fierce Stomp"], "blockers": [], "cost": 2, - "display": { - "row": 37, - "col": 1 - }, - "properties": { - "aoe": 1 - }, + "display": { "row": 37, "col": 1 }, + "properties": {}, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Fierce Stomp", - "cost": 0, - "multipliers": [0, 0, 0, 50, 0, 0] - } + { + "type": "add_spell_prop", + "base_spell": 2, + "target_part": "Geyser Stomp", + "multipliers": [0, 0, 0, 50, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 2, + "target_part": "Stomp Damage", + "hits": { "Geyser Stomp": 1 } + }, + { + "type": "raw_stat", + "bonuses": [{ + "type": "prop", + "abil": "Fierce Stomp", + "name": "aoe", + "value": 1 + }] + } ] }, { @@ -793,69 +722,55 @@ const atrees = { "row": 37, "col": 4 }, - "properties": { - "focusReq": 5, - "focusRegen": -1 - }, + "properties": {}, "effects": [ - { - "type": "replace_spell", - "name": "Crepuscular Ray", - "base_spell": 5, - "spell_type": "damage", - "scaling": "spell", - "display": "DPS", - "cost": 0, - - "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [10, 0, 0, 5, 0, 0] - }, - { - "name": "DPS", - "type": "total", - "hits": { - "Single Arrow": 20 - } - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "DPS": 7 - } + { + "type": "replace_spell", + "name": "Crepuscular Ray", + "base_spell": 6, + "display": "DPS", + "parts": [ + { + "name": "Single Arrow", + "multipliers": [10, 0, 0, 5, 0, 0] + }, + { + "name": "DPS", + "hits": { "Single Arrow": 20 } + }, + { + "name": "Total Damage", + "hits": { "DPS": 7 } + } + ] } - ] - } ] }, { "display_name": "Grape Bomb", "desc": "Arrow bomb will throw 3 additional smaller bombs when exploding.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["Cheaper Escape (2)"], "dependencies": [], "blockers": [], "cost": 2, - "display": { - "row": 37, - "col": 7 - }, + "display": { "row": 37, "col": 7 }, "properties": { - "miniBombs": 3, - "aoe": 2 + "aoe": 2 }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Grape Bomb", - "cost": 0, - "multipliers": [30, 0, 0, 0, 10, 0] - } + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Grape Bomb", + "multipliers": [30, 0, 0, 0, 10, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Total Damage", + "hits": { "Grape Bomb": 3 } + } ] }, { @@ -867,28 +782,32 @@ const atrees = { "dependencies": ["Basaltic Trap"], "blockers": [], "cost": 2, - "display": { - "row": 38, - "col": 6 - }, + "display": { "row": 38, "col": 6 }, "properties": { - "attackSpeed": 0.2 + "attackSpeed": 0.2 }, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Tangled Traps", - "cost": 0, - "multipliers": [20, 0, 0, 0, 0, 20] - } + { + "type": "replace_spell", + "name": "Tangled Traps", + "base_spell": 7, + "display": "DPS", + "parts": [ + { + "name": "Damage Tick", + "multipliers": [20, 0, 0, 0, 0, 20] + }, + { + "name": "DPS", + "hits": { "Damage Tick": 5 } + } + ] + } ] }, { "display_name": "Snow Storm", "desc": "Enemies near you will be slowed down.", - "archetype": "", - "archetype_req": 0, "parents": ["Geyser Stomp", "More Focus (2)"], "dependencies": [], "blockers": [], @@ -908,35 +827,29 @@ const atrees = { "desc": "Your bows from Guardian Angels become all-seeing, increasing their range, damage and letting them shoot up to +5 times each.", "archetype": "Boltslinger", "archetype_req": 11, + "base_abil": "Arrow Shield", "parents": ["Snow Storm"], "dependencies": ["Guardian Angels"], "blockers": [], "cost": 2, - "display": { - "row": 40, - "col": 1 - }, + "display": { "row": 40, "col": 1 }, "properties": { - "range": 8, - "shots": 5 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Single Arrow", - "cost": 0, - "multipliers": [0, 0, 0, 0, 10, 0] + "range": 8, + "shots": 5 }, - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Single Bow", - "cost": 0, - "hits": { - "Single Arrow": 5 + "effects": [ + { + "type": "add_spell_prop", + "base_spell": 4, + "target_part": "Single Arrow", + "multipliers": [0, 0, 0, 0, 10, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 4, + "target_part": "Single Bow", + "hits": { "Single Arrow": 5 } } - } ] }, { @@ -944,44 +857,50 @@ const atrees = { "desc": "Allow you to place +6 Traps, but with reduced damage and range.", "archetype": "Trapper", "archetype_req": 10, + "base_abil": "Arrow Bomb", "parents": ["Grape Bomb", "Cheaper Arrow Bomb (2)"], "dependencies": ["Basaltic Trap"], "blockers": [], "cost": 2, - "display": { - "row": 40, - "col": 7 - }, - "properties": { - "aoe": -2, - "traps": 6 - }, + "display": { "row": 40, "col": 7 }, + "properties": {}, "effects": [ { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Basaltic Trap", - "cost": 0, - "multipliers": [-80, 0, 0, 0, 0, 0] - } - ] + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Basaltic Trap", + "cost": 0, + "multipliers": [-80, 0, 0, 0, 0, 0] }, + { + "type": "raw_stat", + "bonuses": [ + { + "type": "prop", + "abil": "Basaltic Trap", + "name": "aoe", + "value": -2 + }, + { + "type": "prop", + "abil": "Basaltic Trap", + "name": "traps", + "value": 6 + } + ] + } + ] + }, { "display_name": "Bow Proficiency I", "desc": "Improve your Main Attack's damage and range when using a bow.", - "archetype": "", - "archetype_req": 0, + "base_abil": 999, "parents": ["Arrow Bomb"], "dependencies": [], "blockers": [], "cost": 1, - "display": { - "row": 2, - "col": 4 - }, - "properties": { - "mainAtk_range": 6 - }, + "display": { "row": 2, "col": 4 }, + "properties": {}, "effects": [ { "type": "raw_stat", @@ -998,19 +917,13 @@ const atrees = { { "display_name": "Cheaper Arrow Bomb", "desc": "Reduce the Mana cost of Arrow Bomb.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["Bow Proficiency I"], "dependencies": [], "blockers": [], "cost": 1, - "display": { - "row": 2, - "col": 6 - }, - "properties": { - - }, + "display": { "row": 2, "col": 6 }, + "properties": {}, "effects": [ { "type": "add_spell_prop", @@ -1022,18 +935,13 @@ const atrees = { { "display_name": "Cheaper Arrow Storm", "desc": "Reduce the Mana cost of Arrow Storm.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Storm", "parents": ["Grappling Hook", "Windstorm", "Focus"], "dependencies": [], "blockers": [], "cost": 1, - "display": { - "row": 21, - "col": 3 - }, - "properties": { - }, + "display": { "row": 21, "col": 3 }, + "properties": {}, "effects": [ { "type": "add_spell_prop", @@ -1045,26 +953,18 @@ const atrees = { { "display_name": "Cheaper Escape", "desc": "Reduce the Mana cost of Escape.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Escape", "parents": ["Arrow Storm", "Arrow Shield"], "dependencies": [], "blockers": [], "cost": 1, - "display": { - "row": 9, - "col": 4 - }, - "properties": { - - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "cost": -5 - } - ] + "display": { "row": 9, "col": 4, "icon": "node_0"}, + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 2, + "cost": -5 + }] }, { "display_name": "Earth Mastery", @@ -1077,10 +977,10 @@ const atrees = { "cost": 1, "display": { "row": 13, - "col": 8 - }, - "properties": { + "col": 8, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "raw_stat", @@ -1092,8 +992,13 @@ const atrees = { }, { "type": "stat", - "name": "eDam", - "value": [2, 4] + "name": "eDamAddMin", + "value": 2 + }, + { + "type": "stat", + "name": "eDamAddMax", + "value": 4 } ] } @@ -1110,10 +1015,10 @@ const atrees = { "cost": 1, "display": { "row": 13, - "col": 2 - }, - "properties": { + "col": 2, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "raw_stat", @@ -1125,8 +1030,13 @@ const atrees = { }, { "type": "stat", - "name": "tDam", - "value": [1, 8] + "name": "tDamAddMin", + "value": 1 + }, + { + "type": "stat", + "name": "tDamAddMax", + "value": 8 } ] } @@ -1143,10 +1053,10 @@ const atrees = { "cost": 1, "display": { "row": 14, - "col": 4 - }, - "properties": { + "col": 4, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "raw_stat", @@ -1158,8 +1068,13 @@ const atrees = { }, { "type": "stat", - "name": "wDam", - "value": [2, 4] + "name": "wDamAddMin", + "value": 2 + }, + { + "type": "stat", + "name": "wDamAddMax", + "value": 4 } ] } @@ -1168,7 +1083,7 @@ const atrees = { { "display_name": "Air Mastery", "desc": "Increases base damage from all Air attacks", - "archetype": "Battle Monk", + "archetype": "Boltslinger", "archetype_req": 0, "parents": ["Arrow Storm"], "dependencies": [], @@ -1176,10 +1091,10 @@ const atrees = { "cost": 1, "display": { "row": 13, - "col": 0 - }, - "properties": { + "col": 0, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "raw_stat", @@ -1191,8 +1106,13 @@ const atrees = { }, { "type": "stat", - "name": "aDam", - "value": [3, 4] + "name": "aDamAddMin", + "value": 3 + }, + { + "type": "stat", + "name": "aDamAddMax", + "value": 4 } ] } @@ -1209,10 +1129,10 @@ const atrees = { "cost": 1, "display": { "row": 13, - "col": 6 - }, - "properties": { + "col": 6, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "raw_stat", @@ -1224,8 +1144,13 @@ const atrees = { }, { "type": "stat", - "name": "fDam", - "value": [3, 5] + "name": "fDamAddMin", + "value": 3 + }, + { + "type": "stat", + "name": "fDamAddMax", + "value": 5 } ] } @@ -1234,44 +1159,61 @@ const atrees = { { "display_name": "More Shields", "desc": "Give +2 charges to Arrow Shield.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Shield", "parents": ["Grappling Hook", "Basaltic Trap"], "dependencies": ["Arrow Shield"], "blockers": [], "cost": 1, "display": { "row": 21, - "col": 7 + "col": 7, + "icon": "node_0" }, - "properties": { - "shieldCharges": 2 - }, - "effects": [] + "properties": {}, + "effects": [ + { + "type": "add_spell_prop", + "base_spell": 4, + "target_part": "Total Damage", + "hits": { "Shield Damage": 2 } + }, + { + "type": "raw_stat", + "bonuses": [ + { + "type": "prop", + "abil": "Arrow Shield", + "name": "charges", + "value": 2 + } + ] + } + ] }, { "display_name": "Stormy Feet", "desc": "Windy Feet will last longer and add more speed.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Escape", "parents": ["Windstorm"], "dependencies": ["Windy Feet"], "blockers": [], "cost": 1, "display": { - "row": 23, - "col": 1 + "row": 23, + "col": 1, + "icon": "node_0" }, "properties": { - "duration": 60 + "duration": 60 }, "effects": [{ "type": "stat_bonus", + "toggle": "Windy Feet", "bonuses": [ { - "type": "stat", - "name": "spdPct", - "value": 20 + "type": "stat", + "name": "spdPct", + "value": 20 } ] }] @@ -1279,67 +1221,82 @@ const atrees = { { "display_name": "Refined Gunpowder", "desc": "Increase the damage of Arrow Bomb.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["Windstorm"], "dependencies": [], "blockers": [], "cost": 1, "display": { - "row": 25, - "col": 0 + "row": 25, + "col": 0, + "icon": "node_0" }, "properties": {}, - "effects": [ - { + "effects": [{ "type": "add_spell_prop", "base_spell": 3, "target_part": "Arrow Bomb", - "cost": 0, "multipliers": [50, 0, 0, 0, 0, 0] - } - ] + }] }, { "display_name": "More Traps", "desc": "Increase the maximum amount of active Traps you can have by +2.", "archetype": "Trapper", "archetype_req": 10, + "base_abil": "Arrow Bomb", "parents": ["Bouncing Bomb"], "dependencies": ["Basaltic Trap"], "blockers": [], "cost": 1, "display": { "row": 26, - "col": 8 - }, - "properties": { - "traps": 2 - } + "col": 8, + "icon": "node_0" + }, + "properties": {}, + "effects": [{ + "type": "raw_stat", + "bonuses": [{ + "type": "prop", + "abil": "Basaltic Trap", + "name": "traps", + "value": 2 + }] + }] }, { "display_name": "Better Arrow Shield", "desc": "Arrow Shield will gain additional area of effect, knockback and damage.", "archetype": "Sharpshooter", "archetype_req": 0, + "base_abil": "Arrow Shield", "parents": ["Mana Trap", "Shocking Bomb", "Twain's Arc"], "dependencies": ["Arrow Shield"], "blockers": [], "cost": 1, "display": { - "row": 28, - "col": 6 + "row": 28, + "col": 6, + "icon": "node_0" }, - "properties": { - "aoe": 1 - }, + "properties": {}, "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Shield", - "multipliers": [40, 0, 0, 0, 0, 0] - } + { + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Arrow Shield", + "multipliers": [40, 0, 0, 0, 0, 0] + }, + { + "type": "raw_stat", + "bonuses": [{ + "type": "prop", + "abil": "Arrow Shield", + "name": "aoe", + "value": 1 + }] + } ] }, { @@ -1347,274 +1304,248 @@ const atrees = { "desc": "Reduce leap's cooldown by 1s.", "archetype": "Boltslinger", "archetype_req": 0, + "base_abil": "Leap", "parents": ["Leap", "Homing Shots"], "dependencies": ["Leap"], "blockers": [], "cost": 1, "display": { "row": 29, - "col": 1 - }, - "properties": { - "cooldown": -1 - } + "col": 1, + "icon": "node_0" + }, + "properties": {}, + "effects": [{ + "type": "raw_stat", + "bonuses": [{ + "type": "prop", + "abil": "Leap", + "name": "cooldown", + "value": -1 + }] + }] }, { "display_name": "Better Guardian Angels", "desc": "Your Guardian Angels can shoot +4 arrows before disappearing.", "archetype": "Boltslinger", "archetype_req": 0, + "base_abil": "Arrow Shield", "parents": ["Escape Artist", "Homing Shots"], "dependencies": ["Guardian Angels"], "blockers": [], "cost": 1, "display": { - "row": 31, - "col": 2 + "row": 31, + "col": 2, + "icon": "node_0" }, - "properties": { - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Single Bow", - "cost": 0, - "hits": { - "Single Arrow": 4 - } - } - ] + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 4, + "target_part": "Single Bow", + "hits": { "Single Arrow": 4 } + }] }, { "display_name": "Cheaper Arrow Storm (2)", "desc": "Reduce the Mana cost of Arrow Storm.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Storm", "parents": ["Initiator", "Mana Trap"], "dependencies": [], "blockers": [], "cost": 1, "display": { "row": 31, - "col": 8 - }, - "properties": { + "col": 8, + "icon": "node_0" }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "cost": -5 - } - ] + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 1, + "cost": -5 + }] }, { "display_name": "Precise Shot", "desc": "+30% Critical Hit Damage", - "archetype": "", - "archetype_req": 0, "parents": ["Better Guardian Angels", "Cheaper Arrow Shield", "Arrow Hurricane"], "dependencies": [], "blockers": [], "cost": 1, "display": { "row": 33, - "col": 2 - }, - "properties": { - "mainAtk_range": 6 + "col": 2, + "icon": "node_0" }, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "mdCritPct", - "value": 30 - } - ] - } - ] + "properties": {}, + "effects": [{ + "type": "raw_stat", + "bonuses": [{ + "type": "stat", + "name": "mdCritPct", + "value": 30 + }] + }] }, { "display_name": "Cheaper Arrow Shield", "desc": "Reduce the Mana cost of Arrow Shield.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Shield", "parents": ["Precise Shot", "Initiator"], "dependencies": [], "blockers": [], "cost": 1, "display": { "row": 33, - "col": 4 - }, - "properties": { + "col": 4, + "icon": "node_0" }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "cost": -5 - } - ] + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 4, + "cost": -5 + }] }, { "display_name": "Rocket Jump", "desc": "Arrow Bomb's self-damage will knockback you farther away.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["Cheaper Arrow Storm (2)", "Initiator"], "dependencies": ["Arrow Bomb"], "blockers": [], "cost": 1, "display": { "row": 33, - "col": 6 - }, - "properties": { - } + "col": 6, + "icon": "node_0" + }, + "properties": {}, + "effects": [] }, { "display_name": "Cheaper Escape (2)", "desc": "Reduce the Mana cost of Escape.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Escape", "parents": ["Call of the Hound", "Decimator"], "dependencies": [], "blockers": [], "cost": 1, "display": { "row": 34, - "col": 7 - }, - "properties": { - + "col": 7, + "icon": "node_0" }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "cost": -5 - } - ] + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 2, + "cost": -5 + }] }, { "display_name": "Stronger Hook", "desc": "Increase your Grappling Hook's range, speed and strength.", "archetype": "Trapper", "archetype_req": 5, + "base_abil": "Escape", "parents": ["Cheaper Escape (2)"], "dependencies": ["Grappling Hook"], "blockers": [], "cost": 1, "display": { "row": 35, - "col": 8 - }, - "properties": { - "range": 8 - } + "col": 8, + "icon": "node_0" + }, + "properties": {}, + "effects": [{ + "type": "raw_stat", + "bonuses": [{ + "type": "prop", + "abil": "Grappling Hook", + "name": "range", + "value": 8 + }] + }] }, { "display_name": "Cheaper Arrow Bomb (2)", "desc": "Reduce the Mana cost of Arrow Bomb.", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["More Focus (2)", "Minefield"], "dependencies": [], "blockers": [], "cost": 1, "display": { "row": 40, - "col": 5 - }, - "properties": { - + "col": 5, + "icon": "node_0" }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "cost": -5 - } - ] + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 3, + "cost": -5 + }] }, { "display_name": "Bouncing Bomb", "desc": "Arrow Bomb will bounce once when hitting a block or enemy", - "archetype": "", - "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["More Shields"], "dependencies": [], "blockers": [], "cost": 2, "display": { "row": 25, - "col": 7 + "col": 7, + "icon": "node_2" }, - "properties": { - - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Arrow Bomb": 2 - } - } - ] + "properties": {}, + "effects": [] }, { "display_name": "Homing Shots", "desc": "Your Main Attack arrows will follow nearby enemies and not be affected by gravity", - "archetype": "", - "archetype_req": 0, + "base_abil": 999, "parents": ["Leap", "Shocking Bomb"], "dependencies": [], "blockers": [], "cost": 2, "display": { "row": 28, - "col": 2 + "col": 2, + "icon": "node_2" }, - "properties": { - - }, - "effects": [ - - ] + "properties": {}, + "effects": [] }, { "display_name": "Shrapnel Bomb", "desc": "Arrow Bomb's explosion will fling 15 shrapnel, dealing damage in a large area", "archetype": "Boltslinger", "archetype_req": 8, + "base_abil": "Arrow Bomb", "parents": ["Arrow Hurricane", "Precise Shot"], "dependencies": [], "blockers": [], "cost": 2, "display": { "row": 34, - "col": 1 + "col": 1, + "icon": "node_1" }, - "properties": { - - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Shrapnel Bomb", - "cost": 0, - "multipliers": [40, 0, 0, 0, 20, 0] - } - ] + "properties": {}, + "effects": [{ + "type": "add_spell_prop", + "base_spell": 3, + "target_part": "Shrapnel Bomblet", + "multipliers": [40, 0, 0, 0, 20, 0] + }] }, { "display_name": "Elusive", @@ -1627,38 +1558,41 @@ const atrees = { "cost": 2, "display": { "row": 38, - "col": 0 + "col": 0, + "icon": "node_1" }, - "properties": { - - }, - "effects": [ - - ] + "properties": {}, + "effects": [] }, { "display_name": "Double Shots", "desc": "Double Main Attack arrows, but they deal -30% damage per arrow (harder to hit far enemies)", "archetype": "Boltslinger", "archetype_req": 0, + "base_abil": 999, "parents": ["Escape"], "dependencies": [], "blockers": ["Power Shots"], "cost": 1, "display": { "row": 7, - "col": 2 - }, - "properties": { - "arrow": 2 + "col": 2, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "add_spell_prop", "base_spell": 0, - "target_part": "Melee Damage", - "cost": 0, - "multipliers": 0.7 + "target_part": "Single Shot", + "multipliers": [-30, 0, 0, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 0, + "target_part": "Total Damage", + "hits": { "Single Shot": 2 }, + "display": "Total Damage" } ] }, @@ -1667,24 +1601,30 @@ const atrees = { "desc": "Triple Main Attack arrows, but they deal -20% damage per arrow", "archetype": "Boltslinger", "archetype_req": 0, + "base_abil": 999, "parents": ["Arrow Rain", "Frenzy"], "dependencies": ["Double Shots"], "blockers": [], "cost": 1, "display": { "row": 17, - "col": 0 - }, - "properties": { - "arrow": 2 + "col": 0, + "icon": "node_0" }, + "properties": {}, "effects": [ { "type": "add_spell_prop", "base_spell": 0, - "target_part": "Melee Damage", - "cost": 0, - "multipliers": 0.7 + "target_part": "Single Shot", + "multipliers": [-20, 0, 0, 0, 0, 0] + }, + { + "type": "add_spell_prop", + "base_spell": 0, + "target_part": "Total Damage", + "hits": { "Single Shot": 1 }, + "display": "Total Damage" } ] }, @@ -1693,20 +1633,18 @@ const atrees = { "desc": "Main Attack arrows have increased speed and knockback", "archetype": "Sharpshooter", "archetype_req": 0, + "base_abil": 999, "parents": ["Escape"], "dependencies": [], "blockers": ["Double Shots"], "cost": 1, "display": { "row": 7, - "col": 6 + "col": 6, + "icon": "node_0" }, - "properties": { - - }, - "effects": [ - - ] + "properties": {}, + "effects": [] }, { "display_name": "Focus", @@ -1719,25 +1657,21 @@ const atrees = { "cost": 2, "display": { "row": 19, - "col": 4 + "col": 4, + "icon": "node_2" }, - "properties": { - - }, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Focus", - "output": { - "type": "stat", - "abil_name": "Focus", - "name": "damMult" - }, - "scaling": [3], - "max": 3 - } - ] + "properties": {}, + "effects": [{ + "type": "stat_scaling", + "slider": true, + "slider_name": "Focus", + "output": { + "type": "stat", + "name": "damMult" + }, + "scaling": [35], + "max": 3 + }] }, { "display_name": "More Focus", @@ -1750,25 +1684,21 @@ const atrees = { "cost": 1, "display": { "row": 22, - "col": 4 + "col": 4, + "icon": "node_0" }, - "properties": { - - }, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Focus", - "output": { - "type": "stat", - "abil_name": "Focus", - "name": "damMult" - }, - "scaling": [35], - "max": 5 - } - ] + "properties": {}, + "effects": [{ + "type": "stat_scaling", + "slider": true, + "slider_name": "Focus", + "output": { + "type": "stat", + "name": "damMult" + }, + "scaling": [30], + "max": 5 + }] }, { "display_name": "More Focus (2)", @@ -1781,99 +1711,118 @@ const atrees = { "cost": 1, "display": { "row": 39, - "col": 4 + "col": 4, + "icon": "node_0" }, - "properties": { - - }, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Focus", - "output": { - "type": "stat", - "abil_name": "Focus", - "name": "damMult" - }, - "scaling": [35], - "max": 7 - } - ] + "properties": {}, + "effects": [{ + "type": "stat_scaling", + "slider": true, + "slider_name": "Focus", + "output": { + "type": "stat", + "name": "damMult" + }, + "scaling": [25], + "max": 7 + }] }, { "display_name": "Traveler", "desc": "For every 1% Walk Speed you have from items, gain +1 Raw Spell Damage (Max 100)", - "archetype": "", - "archetype_req": 0, "parents": ["Refined Gunpowder", "Twain's Arc"], "dependencies": [], "blockers": [], "cost": 1, "display": { "row": 25, - "col": 2 + "col": 2, + "icon": "node_0" }, - "properties": { - - }, - "effects": [ - { - "type": "stat_scaling", - "slider": false, - "inputs": [ - { - "type": "stat", - "name": "spd" - } - ], - "output": { - "type": "stat", - "name": "sdRaw" - }, - "scaling": [1], - "max": 100 - } - ] + "properties": {}, + "effects": [{ + "type": "stat_scaling", + "slider": false, + "inputs": [{ + "type": "stat", + "name": "spd" + }], + "output": { + "type": "stat", + "name": "sdRaw" + }, + "scaling": [1], + "max": 100 + }] }, { "display_name": "Patient Hunter", "desc": "Your Traps will deal +20% more damage for every second they are active (Max +80%)", "archetype": "Trapper", "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["More Shields"], "dependencies": ["Basaltic Trap"], "blockers": [], "cost": 2, "display": { "row": 22, - "col": 8 + "col": 8, + "icon": "node_1" }, "properties": { "max": 80 }, - "effects": [ - - ] + "effects": [{ + "type": "stat_scaling", + "slider": true, + "slider_name": "Trap Wait Time", + "output": { + "type": "stat", + "name": "damMult:Basaltic Trap" + }, + "slider_step": 1, + "scaling": [20], + "max": 80 + }] }, { "display_name": "Stronger Patient Hunter", "desc": "Add +80% Max Damage to Patient Hunter", "archetype": "Trapper", "archetype_req": 0, + "base_abil": "Arrow Bomb", "parents": ["Grape Bomb"], "dependencies": ["Patient Hunter"], "blockers": [], "cost": 1, "display": { "row": 38, - "col": 8 - }, - "properties": { - "max": 80 + "col": 8, + "icon": "node_0" }, + "properties": {}, "effects": [ - + { + "type": "stat_scaling", + "slider": true, + "slider_name": "Trap Wait Time", + "output": { + "type": "stat", + "name": "damMult:Basaltic Trap" + }, + "scaling": [20], + "max": 80 + }, + { + "type": "raw_stat", + "bonuses": [{ + "type": "prop", + "abil": "Patient Hunter", + "name": "max", + "value": 80 + }] + } ] }, { @@ -1887,24 +1836,21 @@ const atrees = { "cost": 2, "display": { "row": 17, - "col": 2 + "col": 2, + "icon": "node_0" }, - "properties": { - - }, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Hits dealt", - "output": { - "type": "stat", - "name": "spd" - }, - "scaling": [6], - "max": 200 - } - ] + "properties": {}, + "effects": [{ + "type": "stat_scaling", + "slider": true, + "slider_name": "Hits dealt", + "output": { + "type": "stat", + "name": "spd" + }, + "scaling": [6], + "max": 200 + }] }, { "display_name": "Phantom Ray", @@ -1917,59 +1863,66 @@ const atrees = { "cost": 2, "display": { "row": 16, - "col": 4 - }, - "properties": { + "col": 4, + "icon": "node_2" }, + "properties": {}, "effects": [ { "type": "replace_spell", "name": "Phantom Ray", - "cost": 40, - "display_text": "Max Damage", "base_spell": 1, "spell_type": "damage", "scaling": "spell", "display": "Total Damage", "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [25, 0, 5, 0, 0, 0] - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Single Arrow": 16 + { + "name": "Single Arrow", + "type": "damage", + "multipliers": [25, 0, 5, 0, 0, 0] + }, + { + "name": "Total Damage", + "type": "total", + "hits": { + "Single Arrow": 16 + } } - } ] + }, + { + "type": "add_spell_prop", + "base_spell": 1, + "cost": -10 } ] }, { "display_name": "Arrow Rain", "desc": "When Arrow Shield loses its last charge, unleash 200 arrows raining down on enemies", - "archetype": "Trapper", - "archetype_req": 0, + "base_abil": "Arrow Shield", "parents": ["Nimble String", "Air Mastery"], "dependencies": ["Arrow Shield"], "blockers": [], "cost": 2, "display": { "row": 15, - "col": 0 - }, - "properties": { + "col": 0, + "icon": "node_1" }, + "properties": {}, "effects": [ { "type": "add_spell_prop", "base_spell": 4, - "target_part": "Arrow Rain", - "cost": 0, + "target_part": "Arrow Rain (Per Arrow)", "multipliers": [120, 0, 0, 0, 0, 80] + }, + { + "type": "add_spell_prop", + "base_spell": 4, + "target_part": "Arrow Rain (Total)", + "hits": { "Arrow Rain (Per Arrow)": 200 } } ] }, @@ -1984,23 +1937,21 @@ const atrees = { "cost": 1, "display": { "row": 34, - "col": 5 + "col": 5, + "icon": "node_1" }, - "properties": { - }, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Phantom Ray hits", - "output": { - "type": "stat", - "name": "PhRayDmg" - }, - "scaling": 10, - "max": 50 - } - ] + "properties": {}, + "effects": [{ + "type": "stat_scaling", + "slider": true, + "slider_name": "Phantom Ray hits", + "output": { + "type": "stat", + "name": "damMult:Single Arrow" + }, + "scaling": 10, + "max": 50 + }] } ], "Warrior": [ @@ -2025,7 +1976,6 @@ const atrees = { "type": "replace_spell", "name": "Bash", "cost": 45, - "display_text": "Total Damage Average", "base_spell": 1, "spell_type": "damage", "scaling": "spell", @@ -2154,7 +2104,6 @@ const atrees = { "type": "replace_spell", "name": "Charge", "cost": 25, - "display_text": "Total Damage Average", "base_spell": 2, "spell_type": "damage", "scaling": "spell", @@ -2308,7 +2257,6 @@ const atrees = { "type": "replace_spell", "name": "Uppercut", "cost": 45, - "display_text": "Total Damage Average", "base_spell": 3, "spell_type": "damage", "scaling": "spell", @@ -2373,7 +2321,6 @@ const atrees = { "type": "replace_spell", "name": "War Scream", "cost": 35, - "display_text": "War Scream", "base_spell": 4, "spell_type": "damage", "scaling": "spell", @@ -2779,7 +2726,6 @@ const atrees = { { "type": "replace_spell", "name": "Counter", - "display_text": "Counter", "base_spell": 5, "display": "Counter Damage", "parts": [ @@ -3537,7 +3483,6 @@ const atrees = { { "type": "replace_spell", "name": "Shield Strike", - "display_text": "Shield Strike", "base_spell": 6, "display": "Damage per Shield", "parts": [ @@ -3570,7 +3515,6 @@ const atrees = { { "type": "replace_spell", "name": "Sparkling Hope", - "display_text": "Sparkling Hope", "base_spell": 6, "display": "Damage Tick", "parts": [ @@ -3848,7 +3792,7 @@ const atrees = { "type": "raw_stat", "bonuses": [{ "type": "prop", - "abil_name": "Bash", + "abil": "Bash", "name": "aoe", "value": 3 }] diff --git a/js/atree_constants_min.js b/js/atree_constants_min.js index d8e7b70..cbe00b3 100644 --- a/js/atree_constants_min.js +++ b/js/atree_constants_min.js @@ -1,5103 +1 @@ -const atrees= -{ - "Archer": [ - { - "display_name": "Arrow Shield", - "desc": "Create a shield around you that deal damage and knockback mobs when triggered. (2 Charges)", - "parents": [ - 60, - 34 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 9, - "col": 6 - }, - "properties": { - "duration": 60 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Arrow Shield", - "cost": 30, - "display_text": "Max Damage", - "base_spell": 4, - "spell_type": "damage", - "scaling": "spell", - "display": "", - "parts": [ - { - "name": "Shield Damage", - "type": "damage", - "multipliers": [ - 90, - 0, - 0, - 0, - 0, - 10 - ] - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Shield Damage": 2 - } - } - ] - } - ], - "id": 0 - }, - { - "display_name": "Escape", - "desc": "Throw yourself backward to avoid danger. (Hold shift while escaping to cancel)", - "parents": [ - 3 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 7, - "col": 4 - }, - "properties": { - "aoe": 0, - "range": 0 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Escape", - "cost": 25, - "display_text": "Max Damage", - "base_spell": 2, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Total Damage", - "type": "total", - "hits": {} - } - ] - } - ], - "id": 1 - }, - { - "display_name": "Arrow Bomb", - "desc": "Throw a long-range arrow that explodes and deal high damage in a large area. (Self-damage for 25% of your DPS)", - "parents": [], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 0, - "col": 4 - }, - "properties": { - "aoe": 4.5, - "range": 26 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Arrow Bomb", - "cost": 50, - "display_text": "Average Damage", - "base_spell": 3, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Arrow Bomb", - "type": "damage", - "multipliers": [ - 160, - 0, - 0, - 0, - 20, - 0 - ] - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Arrow Bomb": 1 - } - } - ] - } - ], - "id": 2 - }, - { - "display_name": "Heart Shatter", - "desc": "If you hit a mob directly with Arrow Bomb, shatter its heart and deal bonus damage.", - "base_abil": 2, - "parents": [ - 31 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 4, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Bomb", - "cost": 0, - "multipliers": [ - 100, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 3 - }, - { - "display_name": "Fire Creep", - "desc": "Arrow Bomb will leak a trail of fire for 6s, Damaging enemies that walk into it every 0.4s.", - "parents": [ - 68, - 39, - 5 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 16, - "col": 6 - }, - "properties": { - "aoe": 0.8, - "duration": 6 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Fire Creep", - "cost": 0, - "multipliers": [ - 30, - 0, - 0, - 0, - 20, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Fire Creep": 15 - } - } - ], - "id": 4 - }, - { - "display_name": "Bryophyte Roots", - "desc": "When you hit an enemy with Arrow Storm, create an area that slows them down and deals damage every 0.4s.", - "archetype": "Trapper", - "archetype_req": 1, - "parents": [ - 4, - 35 - ], - "dependencies": [ - 7 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 16, - "col": 8 - }, - "properties": { - "aoe": 2, - "duration": 5, - "slowness": 0.4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Bryophyte Roots", - "cost": 0, - "multipliers": [ - 40, - 20, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 5 - }, - { - "display_name": "Nimble String", - "desc": "Arrow Storm throw out +6 arrows per stream and shoot twice as fast.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 36, - 69 - ], - "dependencies": [ - 7 - ], - "blockers": [ - 68 - ], - "cost": 2, - "display": { - "row": 15, - "col": 2 - }, - "properties": { - "shootspeed": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Arrow", - "cost": 0, - "multipliers": [ - -15, - 0, - 0, - 0, - 0, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Stream", - "cost": 0, - "hits": { - "Single Arrow": 6 - } - } - ], - "id": 6 - }, - { - "display_name": "Arrow Storm", - "desc": "Shoot two stream of 8 arrows, dealing significant damage to close mobs and pushing them back.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 58, - 34 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 9, - "col": 2 - }, - "properties": { - "aoe": 0, - "range": 16 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Arrow Storm", - "cost": 40, - "display_text": "Max Damage", - "base_spell": 1, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [ - 30, - 0, - 10, - 0, - 0, - 0 - ] - }, - { - "name": "Single Stream", - "type": "total", - "hits": { - "Single Arrow": 8 - } - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Single Stream": 1 - } - } - ] - } - ], - "id": 7 - }, - { - "display_name": "Guardian Angels", - "desc": "Your protective arrows from Arrow Shield will become sentient bows, dealing damage up to 8 times each to nearby enemies. (Arrow Shield will no longer push nearby enemies)", - "archetype": "Boltslinger", - "archetype_req": 3, - "parents": [ - 59, - 67 - ], - "dependencies": [ - 0 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 19, - "col": 1 - }, - "properties": { - "range": 4, - "duration": 60, - "shots": 8, - "count": 2 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Guardian Angels", - "cost": 30, - "display_text": "Total Damage Average", - "base_spell": 4, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [ - 30, - 0, - 0, - 0, - 0, - 10 - ] - }, - { - "name": "Single Bow", - "type": "total", - "hits": { - "Single Arrow": 8 - } - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Single Bow": 2 - } - } - ] - } - ], - "id": 8 - }, - { - "display_name": "Windy Feet", - "base_abil": 1, - "desc": "When casting Escape, give speed to yourself and nearby allies.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 7 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 10, - "col": 1 - }, - "properties": { - "aoe": 8, - "duration": 120 - }, - "effects": [ - { - "type": "stat_bonus", - "bonuses": [ - { - "type": "stat", - "name": "spd", - "value": 20 - } - ] - } - ], - "id": 9 - }, - { - "display_name": "Basaltic Trap", - "desc": "When you hit the ground with Arrow Bomb, leave a Trap that damages enemies. (Max 2 Traps)", - "archetype": "Trapper", - "archetype_req": 2, - "parents": [ - 5 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 19, - "col": 8 - }, - "properties": { - "aoe": 7, - "traps": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Basaltic Trap", - "cost": 0, - "multipliers": [ - 140, - 30, - 0, - 0, - 30, - 0 - ] - } - ], - "id": 10 - }, - { - "display_name": "Windstorm", - "desc": "Arrow Storm shoot +1 stream of arrows, effectively doubling its damage.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 8, - 33 - ], - "dependencies": [], - "blockers": [ - 68 - ], - "cost": 2, - "display": { - "row": 21, - "col": 1 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Arrow", - "cost": 0, - "multipliers": [ - -10, - 0, - -2, - 0, - 0, - 2 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Single Stream": 1 - } - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Stream", - "cost": 0, - "hits": { - "Single Arrow": 2 - } - } - ], - "id": 11 - }, - { - "display_name": "Grappling Hook", - "base_abil": 1, - "desc": "When casting Escape, throw a hook that pulls you when hitting a block. If you hit an enemy, pull them towards you instead. (Escape will not throw you backward anymore)", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 61, - 40, - 33 - ], - "dependencies": [], - "blockers": [ - 20 - ], - "cost": 2, - "display": { - "row": 21, - "col": 5 - }, - "properties": { - "range": 20 - }, - "effects": [], - "id": 12 - }, - { - "display_name": "Implosion", - "desc": "Arrow bomb will pull enemies towards you. If a trap is nearby, it will pull them towards it instead. Increase Heart Shatter's damage.", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 12, - 40 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 22, - "col": 6 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Bomb", - "cost": 0, - "multipliers": [ - 40, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 13 - }, - { - "display_name": "Twain's Arc", - "desc": "When you have 2+ Focus, holding shift will summon the Twain's Arc. Charge it up to shoot a destructive long-range beam. (Damage is dealt as Main Attack Damage)", - "archetype": "Sharpshooter", - "archetype_req": 4, - "parents": [ - 62, - 64 - ], - "dependencies": [ - 61 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 25, - "col": 4 - }, - "properties": { - "range": 64, - "focusReq": 2 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Twain's Arc", - "cost": 0, - "display_text": "Twain's Arc", - "base_spell": 5, - "spell_type": "damage", - "scaling": "melee", - "display": "Twain's Arc Damage", - "parts": [ - { - "name": "Twain's Arc Damage", - "type": "damage", - "multipliers": [ - 200, - 0, - 0, - 0, - 0, - 0 - ] - } - ] - } - ], - "id": 14 - }, - { - "display_name": "Fierce Stomp", - "desc": "When using Escape, hold shift to quickly drop down and deal damage.", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 42, - 64 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 26, - "col": 1 - }, - "properties": { - "aoe": 4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Fierce Stomp", - "cost": 0, - "multipliers": [ - 100, - 0, - 0, - 0, - 0, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Fierce Stomp": 1 - } - } - ], - "id": 15 - }, - { - "display_name": "Scorched Earth", - "desc": "Fire Creep become much stronger.", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 14 - ], - "dependencies": [ - 4 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 26, - "col": 5 - }, - "properties": { - "duration": 2, - "aoe": 0.4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Fire Creep", - "cost": 0, - "multipliers": [ - 10, - 0, - 0, - 0, - 5, - 0 - ] - } - ], - "id": 16 - }, - { - "display_name": "Leap", - "desc": "When you double tap jump, leap foward. (2s Cooldown)", - "archetype": "Boltslinger", - "archetype_req": 5, - "parents": [ - 42, - 55 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 28, - "col": 0 - }, - "properties": { - "cooldown": 2 - }, - "effects": [], - "id": 17 - }, - { - "display_name": "Shocking Bomb", - "desc": "Arrow Bomb will not be affected by gravity, and all damage conversions become Thunder.", - "archetype": "Sharpshooter", - "archetype_req": 5, - "parents": [ - 14, - 44, - 55 - ], - "dependencies": [ - 2 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 28, - "col": 4 - }, - "properties": { - "gravity": 0 - }, - "effects": [ - { - "type": "convert_spell_conv", - "target_part": "all", - "conversion": "Thunder" - } - ], - "id": 18 - }, - { - "display_name": "Mana Trap", - "desc": "Your Traps will give you 4 Mana per second when you stay close to them.", - "archetype": "Trapper", - "archetype_req": 5, - "parents": [ - 43, - 44 - ], - "dependencies": [ - 4 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 28, - "col": 8 - }, - "properties": { - "range": 12, - "manaRegen": 4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Basaltic Trap", - "cost": 10, - "multipliers": [ - 0, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 19 - }, - { - "display_name": "Escape Artist", - "desc": "When casting Escape, release 100 arrows towards the ground.", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 46, - 17 - ], - "dependencies": [], - "blockers": [ - 12 - ], - "cost": 2, - "display": { - "row": 31, - "col": 0 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Escape Artist", - "cost": 0, - "multipliers": [ - 30, - 0, - 10, - 0, - 0, - 0 - ] - } - ], - "id": 20 - }, - { - "display_name": "Initiator", - "desc": "If you do not damage an enemy for 5s or more, your next sucessful hit will deal +50% damage and add +1 Focus.", - "archetype": "Sharpshooter", - "archetype_req": 5, - "parents": [ - 18, - 44, - 47 - ], - "dependencies": [ - 61 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 31, - "col": 5 - }, - "properties": { - "focus": 1, - "timer": 5 - }, - "effects": [ - { - "type": "stat_bonus", - "bonuses": [ - { - "type": "stat", - "name": "damPct", - "value": 50 - } - ] - } - ], - "id": 21 - }, - { - "display_name": "Call of the Hound", - "desc": "Arrow Shield summon a Hound that will attack and drag aggressive enemies towards your traps.", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 21, - 47 - ], - "dependencies": [ - 0 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 32, - "col": 7 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Call of the Hound", - "cost": 0, - "multipliers": [ - 40, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 22 - }, - { - "display_name": "Arrow Hurricane", - "desc": "Arrow Storm will shoot +2 stream of arrows.", - "archetype": "Boltslinger", - "archetype_req": 8, - "parents": [ - 48, - 20 - ], - "dependencies": [], - "blockers": [ - 68 - ], - "cost": 2, - "display": { - "row": 33, - "col": 0 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Single Stream": 2 - } - } - ], - "id": 23 - }, - { - "display_name": "Geyser Stomp", - "desc": "Fierce Stomp will create geysers, dealing more damage and vertical knockback.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 56 - ], - "dependencies": [ - 15 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 37, - "col": 1 - }, - "properties": { - "aoe": 1 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Fierce Stomp", - "cost": 0, - "multipliers": [ - 0, - 0, - 0, - 50, - 0, - 0 - ] - } - ], - "id": 24 - }, - { - "display_name": "Crepuscular Ray", - "desc": "If you have 5 Focus, casting Arrow Storm will make you levitate and shoot 20 homing arrows per second until you run out of Focus. While in that state, you will lose 1 Focus per second.", - "archetype": "Sharpshooter", - "archetype_req": 10, - "parents": [ - 49 - ], - "dependencies": [ - 7 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 37, - "col": 4 - }, - "properties": { - "focusReq": 5, - "focusRegen": -1 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Crepuscular Ray", - "base_spell": 5, - "spell_type": "damage", - "scaling": "spell", - "display": "DPS", - "cost": 0, - "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [ - 10, - 0, - 0, - 5, - 0, - 0 - ] - }, - { - "name": "DPS", - "type": "total", - "hits": { - "Single Arrow": 20 - } - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "DPS": 7 - } - } - ] - } - ], - "id": 25 - }, - { - "display_name": "Grape Bomb", - "desc": "Arrow bomb will throw 3 additional smaller bombs when exploding.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 51 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 37, - "col": 7 - }, - "properties": { - "miniBombs": 3, - "aoe": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Grape Bomb", - "cost": 0, - "multipliers": [ - 30, - 0, - 0, - 0, - 10, - 0 - ] - } - ], - "id": 26 - }, - { - "display_name": "Tangled Traps", - "desc": "Your Traps will be connected by a rope that deals damage to enemies every 0.2s.", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 26 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 38, - "col": 6 - }, - "properties": { - "attackSpeed": 0.2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Tangled Traps", - "cost": 0, - "multipliers": [ - 20, - 0, - 0, - 0, - 0, - 20 - ] - } - ], - "id": 27 - }, - { - "display_name": "Snow Storm", - "desc": "Enemies near you will be slowed down.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 24, - 63 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 39, - "col": 2 - }, - "properties": { - "range": 2.5, - "slowness": 0.3 - }, - "effects": [], - "id": 28 - }, - { - "display_name": "All-Seeing Panoptes", - "desc": "Your bows from Guardian Angels become all-seeing, increasing their range, damage and letting them shoot up to +5 times each.", - "archetype": "Boltslinger", - "archetype_req": 11, - "parents": [ - 28 - ], - "dependencies": [ - 8 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 40, - "col": 1 - }, - "properties": { - "range": 8, - "shots": 5 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Single Arrow", - "cost": 0, - "multipliers": [ - 0, - 0, - 0, - 0, - 10, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Single Bow", - "cost": 0, - "hits": { - "Single Arrow": 5 - } - } - ], - "id": 29 - }, - { - "display_name": "Minefield", - "desc": "Allow you to place +6 Traps, but with reduced damage and range.", - "archetype": "Trapper", - "archetype_req": 10, - "parents": [ - 26, - 53 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 40, - "col": 7 - }, - "properties": { - "aoe": -2, - "traps": 6 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Basaltic Trap", - "cost": 0, - "multipliers": [ - -80, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 30 - }, - { - "display_name": "Bow Proficiency I", - "desc": "Improve your Main Attack's damage and range when using a bow.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 2 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 2, - "col": 4 - }, - "properties": { - "mainAtk_range": 6 - }, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "mdPct", - "value": 5 - } - ] - } - ], - "id": 31 - }, - { - "display_name": "Cheaper Arrow Bomb", - "desc": "Reduce the Mana cost of Arrow Bomb.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 31 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 2, - "col": 6 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "cost": -10 - } - ], - "id": 32 - }, - { - "display_name": "Cheaper Arrow Storm", - "desc": "Reduce the Mana cost of Arrow Storm.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 12, - 11, - 61 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 21, - "col": 3 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "cost": -5 - } - ], - "id": 33 - }, - { - "display_name": "Cheaper Escape", - "desc": "Reduce the Mana cost of Escape.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 7, - 0 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 9, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "cost": -5 - } - ], - "id": 34 - }, - { - "display_name": "Earth Mastery", - "desc": "Increases your base damage from all Earth attacks", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 0 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 13, - "col": 8 - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "eDamPct", - "value": 20 - }, - { - "type": "stat", - "name": "eDam", - "value": [ - 2, - 4 - ] - } - ] - } - ], - "id": 35 - }, - { - "display_name": "Thunder Mastery", - "desc": "Increases your base damage from all Thunder attacks", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 7, - 39, - 34 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 13, - "col": 2 - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "tDamPct", - "value": 10 - }, - { - "type": "stat", - "name": "tDam", - "value": [ - 1, - 8 - ] - } - ] - } - ], - "id": 36 - }, - { - "display_name": "Water Mastery", - "desc": "Increases your base damage from all Water attacks", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 34, - 36, - 39 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 14, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "wDamPct", - "value": 15 - }, - { - "type": "stat", - "name": "wDam", - "value": [ - 2, - 4 - ] - } - ] - } - ], - "id": 37 - }, - { - "display_name": "Air Mastery", - "desc": "Increases base damage from all Air attacks", - "archetype": "Battle Monk", - "archetype_req": 0, - "parents": [ - 7 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 13, - "col": 0 - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "aDamPct", - "value": 15 - }, - { - "type": "stat", - "name": "aDam", - "value": [ - 3, - 4 - ] - } - ] - } - ], - "id": 38 - }, - { - "display_name": "Fire Mastery", - "desc": "Increases base damage from all Earth attacks", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 36, - 0, - 34 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 13, - "col": 6 - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "fDamPct", - "value": 15 - }, - { - "type": "stat", - "name": "fDam", - "value": [ - 3, - 5 - ] - } - ] - } - ], - "id": 39 - }, - { - "display_name": "More Shields", - "desc": "Give +2 charges to Arrow Shield.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 12, - 10 - ], - "dependencies": [ - 0 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 21, - "col": 7 - }, - "properties": { - "shieldCharges": 2 - }, - "effects": [], - "id": 40 - }, - { - "display_name": "Stormy Feet", - "desc": "Windy Feet will last longer and add more speed.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 11 - ], - "dependencies": [ - 9 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 23, - "col": 1 - }, - "properties": { - "duration": 60 - }, - "effects": [ - { - "type": "stat_bonus", - "bonuses": [ - { - "type": "stat", - "name": "spdPct", - "value": 20 - } - ] - } - ], - "id": 41 - }, - { - "display_name": "Refined Gunpowder", - "desc": "Increase the damage of Arrow Bomb.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 11 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 25, - "col": 0 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Bomb", - "cost": 0, - "multipliers": [ - 50, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 42 - }, - { - "display_name": "More Traps", - "desc": "Increase the maximum amount of active Traps you can have by +2.", - "archetype": "Trapper", - "archetype_req": 10, - "parents": [ - 54 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 26, - "col": 8 - }, - "properties": { - "traps": 2 - }, - "id": 43, - "effects": [] - }, - { - "display_name": "Better Arrow Shield", - "desc": "Arrow Shield will gain additional area of effect, knockback and damage.", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 19, - 18, - 14 - ], - "dependencies": [ - 0 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 28, - "col": 6 - }, - "properties": { - "aoe": 1 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Arrow Shield", - "multipliers": [ - 40, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 44 - }, - { - "display_name": "Better Leap", - "desc": "Reduce leap's cooldown by 1s.", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 17, - 55 - ], - "dependencies": [ - 17 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 29, - "col": 1 - }, - "properties": { - "cooldown": -1 - }, - "id": 45, - "effects": [] - }, - { - "display_name": "Better Guardian Angels", - "desc": "Your Guardian Angels can shoot +4 arrows before disappearing.", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 20, - 55 - ], - "dependencies": [ - 8 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 31, - "col": 2 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Single Bow", - "cost": 0, - "hits": { - "Single Arrow": 4 - } - } - ], - "id": 46 - }, - { - "display_name": "Cheaper Arrow Storm (2)", - "desc": "Reduce the Mana cost of Arrow Storm.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 21, - 19 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 31, - "col": 8 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "cost": -5 - } - ], - "id": 47 - }, - { - "display_name": "Precise Shot", - "desc": "+30% Critical Hit Damage", - "archetype": "", - "archetype_req": 0, - "parents": [ - 46, - 49, - 23 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 33, - "col": 2 - }, - "properties": { - "mainAtk_range": 6 - }, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "mdCritPct", - "value": 30 - } - ] - } - ], - "id": 48 - }, - { - "display_name": "Cheaper Arrow Shield", - "desc": "Reduce the Mana cost of Arrow Shield.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 48, - 21 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 33, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "cost": -5 - } - ], - "id": 49 - }, - { - "display_name": "Rocket Jump", - "desc": "Arrow Bomb's self-damage will knockback you farther away.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 47, - 21 - ], - "dependencies": [ - 2 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 33, - "col": 6 - }, - "properties": {}, - "id": 50, - "effects": [] - }, - { - "display_name": "Cheaper Escape (2)", - "desc": "Reduce the Mana cost of Escape.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 22, - 70 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 34, - "col": 7 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "cost": -5 - } - ], - "id": 51 - }, - { - "display_name": "Stronger Hook", - "desc": "Increase your Grappling Hook's range, speed and strength.", - "archetype": "Trapper", - "archetype_req": 5, - "parents": [ - 51 - ], - "dependencies": [ - 12 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 35, - "col": 8 - }, - "properties": { - "range": 8 - }, - "id": 52, - "effects": [] - }, - { - "display_name": "Cheaper Arrow Bomb (2)", - "desc": "Reduce the Mana cost of Arrow Bomb.", - "archetype": "", - "archetype_req": 0, - "parents": [ - 63, - 30 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 40, - "col": 5 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "cost": -5 - } - ], - "id": 53 - }, - { - "display_name": "Bouncing Bomb", - "desc": "Arrow Bomb will bounce once when hitting a block or enemy", - "archetype": "", - "archetype_req": 0, - "parents": [ - 40 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 25, - "col": 7 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Arrow Bomb": 2 - } - } - ], - "id": 54 - }, - { - "display_name": "Homing Shots", - "desc": "Your Main Attack arrows will follow nearby enemies and not be affected by gravity", - "archetype": "", - "archetype_req": 0, - "parents": [ - 17, - 18 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 28, - "col": 2 - }, - "properties": {}, - "effects": [], - "id": 55 - }, - { - "display_name": "Shrapnel Bomb", - "desc": "Arrow Bomb's explosion will fling 15 shrapnel, dealing damage in a large area", - "archetype": "Boltslinger", - "archetype_req": 8, - "parents": [ - 23, - 48 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 34, - "col": 1 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Shrapnel Bomb", - "cost": 0, - "multipliers": [ - 40, - 0, - 0, - 0, - 20, - 0 - ] - } - ], - "id": 56 - }, - { - "display_name": "Elusive", - "desc": "If you do not get hit for 8+ seconds, become immune to self-damage and remove Arrow Storm's recoil. (Dodging counts as not getting hit)", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 24 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 38, - "col": 0 - }, - "properties": {}, - "effects": [], - "id": 57 - }, - { - "display_name": "Double Shots", - "desc": "Double Main Attack arrows, but they deal -30% damage per arrow (harder to hit far enemies)", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 1 - ], - "dependencies": [], - "blockers": [ - 60 - ], - "cost": 1, - "display": { - "row": 7, - "col": 2 - }, - "properties": { - "arrow": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 0, - "target_part": "Melee Damage", - "cost": 0, - "multipliers": 0.7 - } - ], - "id": 58 - }, - { - "display_name": "Triple Shots", - "desc": "Triple Main Attack arrows, but they deal -20% damage per arrow", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 69, - 67 - ], - "dependencies": [ - 58 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 17, - "col": 0 - }, - "properties": { - "arrow": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 0, - "target_part": "Melee Damage", - "cost": 0, - "multipliers": 0.7 - } - ], - "id": 59 - }, - { - "display_name": "Power Shots", - "desc": "Main Attack arrows have increased speed and knockback", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 1 - ], - "dependencies": [], - "blockers": [ - 58 - ], - "cost": 1, - "display": { - "row": 7, - "col": 6 - }, - "properties": {}, - "effects": [], - "id": 60 - }, - { - "display_name": "Focus", - "desc": "When hitting an aggressive mob 5+ blocks away, gain +1 Focus (Max 3). Resets if you miss once", - "archetype": "Sharpshooter", - "archetype_req": 2, - "parents": [ - 68 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 19, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Focus", - "output": { - "type": "stat", - "abil_name": "Focus", - "name": "damMult" - }, - "scaling": [ - 3 - ], - "max": 3 - } - ], - "id": 61 - }, - { - "display_name": "More Focus", - "desc": "Add +2 max Focus", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 33, - 12 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 22, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Focus", - "output": { - "type": "stat", - "abil_name": "Focus", - "name": "damMult" - }, - "scaling": [ - 35 - ], - "max": 5 - } - ], - "id": 62 - }, - { - "display_name": "More Focus (2)", - "desc": "Add +2 max Focus", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 25, - 28 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 39, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Focus", - "output": { - "type": "stat", - "abil_name": "Focus", - "name": "damMult" - }, - "scaling": [ - 35 - ], - "max": 7 - } - ], - "id": 63 - }, - { - "display_name": "Traveler", - "desc": "For every 1% Walk Speed you have from items, gain +1 Raw Spell Damage (Max 100)", - "archetype": "", - "archetype_req": 0, - "parents": [ - 42, - 14 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 25, - "col": 2 - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": false, - "inputs": [ - { - "type": "stat", - "name": "spd" - } - ], - "output": { - "type": "stat", - "name": "sdRaw" - }, - "scaling": [ - 1 - ], - "max": 100 - } - ], - "id": 64 - }, - { - "display_name": "Patient Hunter", - "desc": "Your Traps will deal +20% more damage for every second they are active (Max +80%)", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 40 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 22, - "col": 8 - }, - "properties": { - "max": 80 - }, - "effects": [], - "id": 65 - }, - { - "display_name": "Stronger Patient Hunter", - "desc": "Add +80% Max Damage to Patient Hunter", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 26 - ], - "dependencies": [ - 65 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 38, - "col": 8 - }, - "properties": { - "max": 80 - }, - "effects": [], - "id": 66 - }, - { - "display_name": "Frenzy", - "desc": "Every time you hit an enemy, briefly gain +6% Walk Speed (Max 200%). Decay -40% of the bonus every second", - "archetype": "Boltslinger", - "archetype_req": 0, - "parents": [ - 59, - 6 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 17, - "col": 2 - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Hits dealt", - "output": { - "type": "stat", - "name": "spd" - }, - "scaling": [ - 6 - ], - "max": 200 - } - ], - "id": 67 - }, - { - "display_name": "Phantom Ray", - "desc": "Condense Arrow Storm into a single ray that damages enemies 10 times per second", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 37, - 4 - ], - "dependencies": [ - 7 - ], - "blockers": [ - 11, - 6, - 23 - ], - "cost": 2, - "display": { - "row": 16, - "col": 4 - }, - "properties": {}, - "effects": [ - { - "type": "replace_spell", - "name": "Phantom Ray", - "cost": 40, - "display_text": "Max Damage", - "base_spell": 1, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Single Arrow", - "type": "damage", - "multipliers": [ - 25, - 0, - 5, - 0, - 0, - 0 - ] - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Single Arrow": 16 - } - } - ] - } - ], - "id": 68 - }, - { - "display_name": "Arrow Rain", - "desc": "When Arrow Shield loses its last charge, unleash 200 arrows raining down on enemies", - "archetype": "Trapper", - "archetype_req": 0, - "parents": [ - 6, - 38 - ], - "dependencies": [ - 0 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 15, - "col": 0 - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Arrow Rain", - "cost": 0, - "multipliers": [ - 120, - 0, - 0, - 0, - 0, - 80 - ] - } - ], - "id": 69 - }, - { - "display_name": "Decimator", - "desc": "Phantom Ray will increase its damage by 10% everytime you do not miss with it (Max 50%)", - "archetype": "Sharpshooter", - "archetype_req": 0, - "parents": [ - 49 - ], - "dependencies": [ - 68 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 34, - "col": 5 - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Phantom Ray hits", - "output": { - "type": "stat", - "name": "PhRayDmg" - }, - "scaling": 10, - "max": 50 - } - ], - "id": 70 - } - ], - "Warrior": [ - { - "display_name": "Bash", - "desc": "Violently bash the ground, dealing high damage in a large area", - "parents": [], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 0, - "col": 4, - "icon": "node_4" - }, - "properties": { - "aoe": 4, - "range": 3 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Bash", - "cost": 45, - "display_text": "Total Damage Average", - "base_spell": 1, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Single Hit", - "type": "damage", - "multipliers": [ - 130, - 20, - 0, - 0, - 0, - 0 - ] - }, - { - "name": "Total Damage", - "type": "total", - "hits": { - "Single Hit": 1 - } - } - ] - } - ], - "id": 0 - }, - { - "display_name": "Spear Proficiency 1", - "desc": "Improve your Main Attack's damage and range w/ spear", - "base_abil": 999, - "parents": [ - 0 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 2, - "col": 4, - "icon": "node_0" - }, - "properties": { - "melee_range": 1 - }, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "mdPct", - "value": 5 - } - ] - } - ], - "id": 1 - }, - { - "display_name": "Cheaper Bash", - "desc": "Reduce the Mana cost of Bash", - "base_abil": 0, - "parents": [ - 1 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 2, - "col": 2, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "cost": -10 - } - ], - "id": 2 - }, - { - "display_name": "Double Bash", - "desc": "Bash will hit a second time at a farther range", - "parents": [ - 1 - ], - "base_abil": 0, - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 4, - "col": 4, - "icon": "node_1" - }, - "properties": { - "range": 3 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Single Hit": 1 - } - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Hit", - "cost": 0, - "multipliers": [ - -50, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 3 - }, - { - "display_name": "Charge", - "desc": "Charge forward at high speed (hold shift to cancel)", - "parents": [ - 3 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 6, - "col": 4, - "icon": "node_4" - }, - "properties": {}, - "effects": [ - { - "type": "replace_spell", - "name": "Charge", - "cost": 25, - "display_text": "Total Damage Average", - "base_spell": 2, - "spell_type": "damage", - "scaling": "spell", - "display": "", - "parts": [ - {} - ] - } - ], - "id": 4 - }, - { - "display_name": "Heavy Impact", - "desc": "After using Charge, violently crash down into the ground and deal damage", - "base_abil": 4, - "parents": [ - 8 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 9, - "col": 1, - "icon": "node_1" - }, - "properties": { - "aoe": 4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Heavy Impact", - "cost": 0, - "multipliers": [ - 100, - 0, - 0, - 0, - 0, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Contact Damage", - "display": "Contact Damage", - "hits": { - "Heavy Impact": 1 - } - } - ], - "id": 5 - }, - { - "display_name": "Vehement", - "desc": "For every 1% or 1 Raw Main Attack Damage you have from items, gain +2% Walk Speed (Max 20%)", - "archetype": "Fallen", - "archetype_req": 0, - "parents": [ - 4 - ], - "dependencies": [], - "blockers": [ - 7 - ], - "cost": 1, - "display": { - "row": 6, - "col": 2, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": false, - "inputs": [ - { - "type": "stat", - "name": "mdPct" - }, - { - "type": "stat", - "name": "mdRaw" - } - ], - "output": { - "type": "stat", - "name": "spd" - }, - "scaling": [ - 1, - 1 - ], - "max": 20 - } - ], - "id": 6 - }, - { - "display_name": "Tougher Skin", - "desc": "Harden your skin and become permanently +5% more resistant\nFor every 1% or 1 Raw Heath Regen you have from items, gain +10 Health (Max 100)", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 4 - ], - "dependencies": [], - "blockers": [ - 6 - ], - "cost": 1, - "display": { - "row": 6, - "col": 6, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "baseResist", - "value": 5 - } - ] - }, - { - "type": "stat_scaling", - "slider": false, - "inputs": [ - { - "type": "stat", - "name": "hprRaw" - }, - { - "type": "stat", - "name": "hprPct" - } - ], - "output": { - "type": "stat", - "name": "hpBonus" - }, - "scaling": [ - 10, - 10 - ], - "max": 100 - } - ], - "id": 7 - }, - { - "display_name": "Uppercut", - "desc": "Rocket enemies in the air and deal massive damage", - "parents": [ - 6, - 9 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 8, - "col": 2, - "icon": "node_4" - }, - "properties": { - "aoe": 3, - "range": 5 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Uppercut", - "cost": 45, - "display_text": "Total Damage Average", - "base_spell": 3, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "Uppercut", - "multipliers": [ - 150, - 50, - 50, - 0, - 0, - 0 - ] - }, - { - "name": "Total Damage", - "hits": { - "Uppercut": 1 - } - } - ] - } - ], - "id": 8 - }, - { - "display_name": "Cheaper Charge", - "desc": "Reduce the Mana cost of Charge", - "base_abil": 4, - "parents": [ - 8, - 10 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 8, - "col": 4, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "cost": -5 - } - ], - "id": 9 - }, - { - "display_name": "War Scream", - "desc": "Emit a terrorizing roar that deals damage, pull nearby enemies, and add damage resistance to yourself and allies", - "parents": [ - 7, - 9 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 8, - "col": 6, - "icon": "node_4" - }, - "properties": { - "duration": 30, - "aoe": 12, - "defense_bonus": 10 - }, - "effects": [ - { - "type": "replace_spell", - "name": "War Scream", - "cost": 35, - "display_text": "War Scream", - "base_spell": 4, - "spell_type": "damage", - "scaling": "spell", - "display": "Total Damage", - "parts": [ - { - "name": "War Scream", - "multipliers": [ - 50, - 0, - 0, - 0, - 50, - 0 - ] - }, - { - "name": "Total Damage", - "hits": { - "War Scream": 1 - } - } - ] - } - ], - "id": 10 - }, - { - "display_name": "Earth Mastery", - "desc": "Increases base damage from all Earth attacks", - "archetype": "Fallen", - "archetype_req": 0, - "parents": [ - 8 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 10, - "col": 0, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "eDamPct", - "value": 20 - }, - { - "type": "stat", - "name": "eDamAddMin", - "value": 2 - }, - { - "type": "stat", - "name": "eDamAddMax", - "value": 4 - } - ] - } - ], - "id": 11 - }, - { - "display_name": "Thunder Mastery", - "desc": "Increases base damage from all Thunder attacks", - "archetype": "Fallen", - "archetype_req": 0, - "parents": [ - 8, - 14, - 9 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 10, - "col": 2, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "tDamPct", - "value": 10 - }, - { - "type": "stat", - "name": "tDamAddMin", - "value": 1 - }, - { - "type": "stat", - "name": "tDamAddMax", - "value": 8 - } - ] - } - ], - "id": 12 - }, - { - "display_name": "Water Mastery", - "desc": "Increases base damage from all Water attacks", - "archetype": "Battle Monk", - "archetype_req": 0, - "parents": [ - 9, - 12, - 14 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 11, - "col": 4, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "wDamPct", - "value": 15 - }, - { - "type": "stat", - "name": "wDamAddMin", - "value": 2 - }, - { - "type": "stat", - "name": "wDamAddMax", - "value": 4 - } - ] - } - ], - "id": 13 - }, - { - "display_name": "Air Mastery", - "desc": "Increases base damage from all Air attacks", - "archetype": "Battle Monk", - "archetype_req": 0, - "parents": [ - 10, - 12, - 9 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 10, - "col": 6, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "aDamPct", - "value": 15 - }, - { - "type": "stat", - "name": "aDamAddMin", - "value": 3 - }, - { - "type": "stat", - "name": "aDamAddMax", - "value": 4 - } - ] - } - ], - "id": 14 - }, - { - "display_name": "Fire Mastery", - "desc": "Increases base damage from all Earth attacks", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 10 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 10, - "col": 8, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "fDamPct", - "value": 15 - }, - { - "type": "stat", - "name": "fDamAddMin", - "value": 3 - }, - { - "type": "stat", - "name": "fDamAddMax", - "value": 5 - } - ] - } - ], - "id": 15 - }, - { - "display_name": "Quadruple Bash", - "desc": "Bash will hit 4 times at an even larger range", - "archetype": "Fallen", - "archetype_req": 0, - "base_abil": 0, - "parents": [ - 11, - 17 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 12, - "col": 0, - "icon": "node_1" - }, - "properties": { - "range": 6 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Total Damage", - "hits": { - "Single Hit": 2 - } - }, - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Hit", - "multipliers": [ - -20, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 16 - }, - { - "display_name": "Fireworks", - "desc": "Mobs hit by Uppercut will explode mid-air and receive additional damage", - "archetype": "Fallen", - "archetype_req": 0, - "base_abil": 8, - "parents": [ - 12, - 16 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 12, - "col": 2, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Fireworks", - "multipliers": [ - 80, - 0, - 20, - 0, - 0, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "hits": { - "Fireworks": 1 - } - } - ], - "id": 17 - }, - { - "display_name": "Half-Moon Swipe", - "desc": "Uppercut will deal a footsweep attack at a longer and wider angle. All elemental conversions become Water", - "archetype": "Battle Monk", - "archetype_req": 1, - "base_abil": 8, - "parents": [ - 13 - ], - "dependencies": [ - 8 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 13, - "col": 4, - "icon": "node_1" - }, - "properties": { - "range": 4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Uppercut", - "cost": -10, - "multipliers": [ - -70, - 0, - 0, - 0, - 0, - 0 - ] - }, - { - "type": "convert_spell_conv", - "target_part": "all", - "conversion": "Water" - } - ], - "id": 18 - }, - { - "display_name": "Flyby Jab", - "desc": "Damage enemies in your way when using Charge", - "base_abil": 4, - "parents": [ - 14, - 20 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 12, - "col": 6, - "icon": "node_1" - }, - "properties": { - "aoe": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Flyby Jab", - "multipliers": [ - 20, - 0, - 0, - 0, - 0, - 40 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Contact Damage", - "display": "Contact Damage", - "hits": { - "Flyby Jab": 1 - } - } - ], - "id": 19 - }, - { - "display_name": "Flaming Uppercut", - "desc": "Uppercut will light mobs on fire, dealing damage every 0.6 seconds", - "archetype": "Paladin", - "archetype_req": 0, - "base_abil": 8, - "parents": [ - 15, - 19 - ], - "dependencies": [ - 8 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 12, - "col": 8, - "icon": "node_1" - }, - "properties": { - "duration": 3, - "tick": 0.6 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Flaming Uppercut", - "multipliers": [ - 0, - 0, - 0, - 0, - 50, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Flaming Uppercut Total Damage", - "hits": { - "Flaming Uppercut": 5 - } - }, - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "hits": { - "Flaming Uppercut": 5 - } - } - ], - "id": 20 - }, - { - "display_name": "Iron Lungs", - "desc": "War Scream deals more damage", - "base_abil": 10, - "parents": [ - 19, - 20 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 13, - "col": 7, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "War Scream", - "cost": 0, - "multipliers": [ - 30, - 0, - 0, - 0, - 0, - 30 - ] - } - ], - "id": 21 - }, - { - "display_name": "Generalist", - "desc": "After casting 3 different spells in a row, your next spell will cost 5 mana", - "archetype": "Battle Monk", - "archetype_req": 3, - "parents": [ - 23 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 15, - "col": 2, - "icon": "node_3" - }, - "properties": {}, - "effects": [], - "id": 22 - }, - { - "display_name": "Counter", - "desc": "When dodging a nearby enemy attack, get 30% chance to instantly attack back", - "archetype": "Battle Monk", - "archetype_req": 0, - "parents": [ - 18 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 15, - "col": 4, - "icon": "node_1" - }, - "properties": { - "chance": 30 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Counter", - "display_text": "Counter", - "base_spell": 5, - "display": "Counter Damage", - "parts": [ - { - "name": "Counter Damage", - "multipliers": [ - 60, - 0, - 20, - 0, - 0, - 20 - ] - } - ] - } - ], - "id": 23 - }, - { - "display_name": "Mantle of the Bovemists", - "desc": "When casting War Scream, create a holy shield around you that reduces all incoming damage by 70% for 3 hits (20s cooldown)", - "archetype": "Paladin", - "archetype_req": 3, - "parents": [ - 21 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 15, - "col": 7, - "icon": "node_3" - }, - "properties": { - "mantle_charge": 3 - }, - "effects": [ - { - "type": "raw_stat", - "toggle": true, - "bonuses": [ - { - "type": "stat", - "name": "defPct", - "value": 70 - } - ] - } - ], - "id": 24 - }, - { - "display_name": "Bak'al's Grasp", - "desc": "After casting War Scream, become Corrupted (15s Cooldown). You cannot heal while in that state\n\nWhile Corrupted, every 2% of Health you lose will add +4 Raw Damage to your attacks (Max 120)", - "archetype": "Fallen", - "archetype_req": 2, - "parents": [ - 16, - 17 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 16, - "col": 1, - "icon": "node_3" - }, - "properties": { - "cooldown": 15 - }, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Corrupted", - "output": { - "type": "stat", - "name": "damRaw" - }, - "scaling": [ - 4 - ], - "slider_step": 1, - "max": 120 - } - ], - "id": 25 - }, - { - "display_name": "Spear Proficiency 2", - "desc": "Improve your Main Attack's damage and range w/ spear", - "base_abil": 999, - "parents": [ - 25, - 27 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 17, - "col": 0, - "icon": "node_0" - }, - "properties": { - "melee_range": 1 - }, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "mdPct", - "value": 5 - } - ] - } - ], - "id": 26 - }, - { - "display_name": "Cheaper Uppercut", - "desc": "Reduce the Mana Cost of Uppercut", - "base_abil": 8, - "parents": [ - 26, - 28, - 23 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 17, - "col": 3, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "cost": -5 - } - ], - "id": 27 - }, - { - "display_name": "Aerodynamics", - "desc": "During Charge, you can steer and change direction", - "archetype": "Battle Monk", - "archetype_req": 0, - "base_abil": 4, - "parents": [ - 27, - 29 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 17, - "col": 5, - "icon": "node_1" - }, - "properties": {}, - "effects": [], - "id": 28 - }, - { - "display_name": "Provoke", - "desc": "Mobs damaged by War Scream will target only you for at least 5s \n\nReduce the Mana cost of War Scream", - "archetype": "Paladin", - "archetype_req": 0, - "base_abil": 10, - "parents": [ - 28, - 24 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 17, - "col": 7, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "cost": -5 - } - ], - "id": 29 - }, - { - "display_name": "Precise Strikes", - "desc": "+30% Critical Hit Damage", - "parents": [ - 27, - 26 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 18, - "col": 2, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "critDamPct", - "value": 30 - } - ] - } - ], - "id": 30 - }, - { - "display_name": "Air Shout", - "desc": "War Scream will fire a projectile that can go through walls and deal damage multiple times", - "base_abil": 10, - "parents": [ - 28, - 29 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 18, - "col": 6, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Air Shout", - "multipliers": [ - 20, - 0, - 0, - 0, - 0, - 5 - ] - } - ], - "id": 31 - }, - { - "display_name": "Enraged Blow", - "desc": "While Corriupted, every 1% of Health you lose will increase your damage by +3% (Max 300%)", - "archetype": "Fallen", - "archetype_req": 0, - "parents": [ - 26 - ], - "dependencies": [ - 25 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 20, - "col": 0, - "icon": "node_2" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": false, - "inputs": [ - { - "type": "stat", - "name": "hpBonus" - } - ], - "output": { - "type": "stat", - "name": "damMult" - }, - "scaling": [ - 3 - ], - "max": 300 - } - ], - "id": 32 - }, - { - "display_name": "Flying Kick", - "desc": "When using Charge, mobs hit will halt your momentum and get knocked back", - "archetype": "Battle Monk", - "archetype_req": 1, - "base_abil": 4, - "parents": [ - 27, - 34 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 20, - "col": 3, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Flying Kick", - "multipliers": [ - 120, - 0, - 0, - 10, - 0, - 20 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Flying Kick Max Damage", - "hits": { - "Flying Kick": 1 - }, - "display": "Flying Kick Max Damage" - } - ], - "id": 33 - }, - { - "display_name": "Stronger Mantle", - "desc": "Add +2 additional charges to Mantle of the Bovemists", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 35, - 33 - ], - "dependencies": [ - 24 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 20, - "col": 6, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "prop", - "abil": 24, - "name": "mantle_charge", - "value": 2 - } - ] - } - ], - "id": 34 - }, - { - "display_name": "Manachism", - "desc": "If you receive a hit that's less than 5% of your max HP, gain 10 Mana (1s Cooldown)", - "archetype": "Paladin", - "archetype_req": 3, - "parents": [ - 34, - 29 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 20, - "col": 8, - "icon": "node_2" - }, - "properties": { - "cooldown": 1 - }, - "effects": [], - "id": 35 - }, - { - "display_name": "Boiling Blood", - "desc": "Bash leaves a trail of boiling blood behind its first explosion, slowing down and damaging enemies above it every 0.4 seconds", - "archetype": "", - "archetype_req": 0, - "parents": [ - 32, - 37 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 22, - "col": 0, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Boiling Blood", - "cost": 0, - "multipliers": [ - 25, - 0, - 0, - 0, - 5, - 0 - ] - } - ], - "id": 36 - }, - { - "display_name": "Ragnarokkr", - "desc": "War Scream become deafening, increasing its range and giving damage bonus to players", - "archetype": "Fallen", - "archetype_req": 0, - "base_abil": 10, - "parents": [ - 36, - 33 - ], - "dependencies": [ - 10 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 22, - "col": 2, - "icon": "node_2" - }, - "properties": { - "aoe": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "cost": 10 - }, - { - "type": "raw_stat", - "toggle": true, - "bonuses": [ - { - "type": "stat", - "name": "damMult", - "value": 30 - } - ] - } - ], - "id": 37 - }, - { - "display_name": "Ambidextrous", - "desc": "Increase your chance to attack with Counter by +30%", - "base_abil": 23, - "parents": [ - 33, - 34, - 39 - ], - "dependencies": [ - 23 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 22, - "col": 4, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "prop", - "abil": 23, - "name": "chance", - "value": 30 - } - ] - } - ], - "id": 38 - }, - { - "display_name": "Burning Heart", - "desc": "For every 100 Health Bonus you have from item IDs, gain +2% Fire Damage (Max 100%)", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 38, - 40 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 22, - "col": 6, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": false, - "inputs": [ - { - "type": "stat", - "name": "hpBonus" - } - ], - "output": { - "type": "stat", - "name": "fDamPct" - }, - "scaling": [ - 2 - ], - "max": 100 - } - ], - "id": 39 - }, - { - "display_name": "Stronger Bash", - "desc": "Increase the damage of Bash", - "base_abil": 0, - "parents": [ - 39, - 35 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 22, - "col": 8, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "target_part": "Single Hit", - "multipliers": [ - 30, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 40 - }, - { - "display_name": "Intoxicating Blood", - "desc": "After leaving Corrupted, gain 2% of the health lost back for each enemy killed while Corrupted", - "archetype": "Fallen", - "archetype_req": 5, - "base_abil": 25, - "parents": [ - 37, - 36 - ], - "dependencies": [ - 25 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 23, - "col": 1, - "icon": "node_1" - }, - "properties": {}, - "effects": [], - "id": 41 - }, - { - "display_name": "Comet", - "desc": "After being hit by Fireworks, enemies will crash into the ground and receive more damage", - "archetype": "Fallen", - "archetype_req": 0, - "base_abil": 8, - "parents": [ - 37 - ], - "dependencies": [ - 17 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 24, - "col": 2, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Comet", - "cost": 0, - "multipliers": [ - 80, - 20, - 0, - 0, - 0, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Total Damage", - "cost": 0, - "hits": { - "Comet": 1 - } - } - ], - "id": 42 - }, - { - "display_name": "Collide", - "desc": "Mobs thrown into walls from Flying Kick will explode and receive additonal damage", - "archetype": "Battle Monk", - "archetype_req": 4, - "base_abil": 4, - "parents": [ - 38, - 39 - ], - "dependencies": [ - 33 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 23, - "col": 5, - "icon": "node_1" - }, - "properties": { - "aoe": 4 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Collide", - "cost": 0, - "multipliers": [ - 100, - 0, - 0, - 0, - 50, - 0 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 2, - "target_part": "Flying Kick Max Damage", - "hits": { - "Collide": 1 - } - } - ], - "id": 43 - }, - { - "display_name": "Rejuvenating Skin", - "desc": "Regain back 30% of the damage you take as healing over 30s", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 39, - 40 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 23, - "col": 7, - "icon": "node_3" - }, - "properties": {}, - "effects": [], - "id": 44 - }, - { - "display_name": "Uncontainable Corruption", - "desc": "Reduce the cooldown of Bak'al's Grasp by -5s, and increase the raw damage gained for every 2% of health lost by +1", - "base_abil": 25, - "parents": [ - 36, - 46 - ], - "dependencies": [ - 25 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 26, - "col": 0, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Corrupted", - "output": { - "type": "stat", - "name": "damRaw" - }, - "scaling": [ - 0.5 - ], - "max": 50 - }, - { - "type": "raw_stat", - "bonuses": [ - { - "type": "prop", - "abil": 25, - "name": "cooldown", - "value": -5 - } - ] - } - ], - "id": 45 - }, - { - "display_name": "Radiant Devotee", - "desc": "For every 4% Reflection you have from items, gain +1/5s Mana Regen (Max 10/5s)", - "archetype": "Battle Monk", - "archetype_req": 1, - "parents": [ - 47, - 45 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 26, - "col": 2, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "inputs": [ - { - "type": "stat", - "name": "ref" - } - ], - "output": { - "type": "stat", - "name": "mr" - }, - "scaling": [ - 0.25 - ], - "max": 10 - } - ], - "id": 46 - }, - { - "display_name": "Whirlwind Strike", - "desc": "Uppercut will create a strong gust of air, launching you upward with enemies (Hold shift to stay grounded)", - "archetype": "Battle Monk", - "archetype_req": 5, - "base_abil": 8, - "parents": [ - 38, - 46 - ], - "dependencies": [ - 8 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 26, - "col": 4, - "icon": "node_1" - }, - "properties": { - "range": 2 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Uppercut", - "multipliers": [ - 0, - 0, - 0, - 0, - 0, - 50 - ] - } - ], - "id": 47 - }, - { - "display_name": "Mythril Skin", - "desc": "Gain +5% Base Resistance and become immune to knockback", - "archetype": "Paladin", - "archetype_req": 6, - "parents": [ - 44 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 26, - "col": 7, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "baseResist", - "value": 5 - } - ] - } - ], - "id": 48 - }, - { - "display_name": "Armour Breaker", - "desc": "While Corrupted, losing 30% Health will make your next Uppercut destroy enemies' defense, rendering them weaker to damage", - "archetype": "Fallen", - "archetype_req": 0, - "base_abil": 8, - "parents": [ - 45, - 46 - ], - "dependencies": [ - 25 - ], - "blockers": [], - "cost": 2, - "display": { - "row": 27, - "col": 1, - "icon": "node_2" - }, - "properties": { - "duration": 5 - }, - "effects": [ - { - "type": "raw_stat", - "toggle": true, - "bonuses": [ - { - "type": "stat", - "name": "damMult", - "value": 30 - } - ] - } - ], - "id": 49 - }, - { - "display_name": "Shield Strike", - "desc": "When your Mantle of the Bovemist loses all charges, deal damage around you for each Mantle individually lost", - "archetype": "Paladin", - "archetype_req": 0, - "base_abil": 24, - "parents": [ - 48, - 51 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 27, - "col": 6, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "replace_spell", - "name": "Shield Strike", - "display_text": "Shield Strike", - "base_spell": 6, - "display": "Damage per Shield", - "parts": [ - { - "name": "Damage per Shield", - "multipliers": [ - 60, - 0, - 20, - 0, - 0, - 0 - ] - } - ] - } - ], - "id": 50 - }, - { - "display_name": "Sparkling Hope", - "desc": "Everytime you heal 5% of your max health, deal damage to all nearby enemies", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 48 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 27, - "col": 8, - "icon": "node_2" - }, - "properties": { - "aoe": 6 - }, - "effects": [ - { - "type": "replace_spell", - "name": "Sparkling Hope", - "display_text": "Sparkling Hope", - "base_spell": 6, - "display": "Damage Tick", - "parts": [ - { - "name": "Damage Tick", - "multipliers": [ - 10, - 0, - 5, - 0, - 0, - 0 - ] - } - ] - } - ], - "id": 51 - }, - { - "display_name": "Massive Bash", - "desc": "While Corrupted, every 3% Health you lose will add +1 AoE to Bash (Max 10)", - "archetype": "Fallen", - "archetype_req": 8, - "base_abil": 0, - "parents": [ - 53, - 45 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 28, - "col": 0, - "icon": "node_2" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Corrupted", - "output": { - "type": "prop", - "abil": 0, - "name": "aoe" - }, - "scaling": [ - 0.3333333333333333 - ], - "max": 10 - } - ], - "id": 52 - }, - { - "display_name": "Tempest", - "desc": "War Scream will ripple the ground and deal damage 3 times in a large area", - "archetype": "Battle Monk", - "archetype_req": 0, - "base_abil": 10, - "parents": [ - 52, - 54 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 28, - "col": 2, - "icon": "node_1" - }, - "properties": { - "aoe": 16 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Tempest", - "multipliers": [ - 30, - 10, - 0, - 0, - 0, - 10 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Tempest Total Damage", - "hits": { - "Tempest": 3 - } - }, - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Total Damage", - "hits": { - "Tempest": 3 - } - } - ], - "id": 53 - }, - { - "display_name": "Spirit of the Rabbit", - "desc": "Reduce the Mana cost of Charge and increase your Walk Speed by +20%", - "archetype": "Battle Monk", - "archetype_req": 5, - "base_abil": 4, - "parents": [ - 53, - 47 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 28, - "col": 4, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 2, - "cost": -5 - }, - { - "type": "raw_stat", - "bonuses": [ - { - "type": "stat", - "name": "spd", - "value": 20 - } - ] - } - ], - "id": 54 - }, - { - "display_name": "Massacre", - "desc": "While Corrupted, if your effective attack speed is Slow or lower, hitting an enemy with your Main Attack will add +1% to your Corrupted bar", - "archetype": "Fallen", - "archetype_req": 5, - "base_abil": 999, - "parents": [ - 53, - 52 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 29, - "col": 1, - "icon": "node_1" - }, - "properties": {}, - "effects": [], - "id": 55 - }, - { - "display_name": "Axe Kick", - "desc": "Increase the damage of Uppercut, but also increase its mana cost", - "base_abil": 8, - "parents": [ - 53, - 54 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 29, - "col": 3, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "target_part": "Uppercut", - "cost": 10, - "multipliers": [ - 100, - 0, - 0, - 0, - 0, - 0 - ] - } - ], - "id": 56 - }, - { - "display_name": "Radiance", - "desc": "Bash will buff your allies' positive IDs. (15s Cooldown)", - "archetype": "Paladin", - "archetype_req": 2, - "base_abil": 0, - "parents": [ - 54, - 58 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 29, - "col": 5, - "icon": "node_2" - }, - "properties": { - "cooldown": 15 - }, - "effects": [], - "id": 57 - }, - { - "display_name": "Cheaper Bash 2", - "desc": "Reduce the Mana cost of Bash", - "base_abil": 0, - "parents": [ - 57, - 50, - 51 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 29, - "col": 7, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 1, - "cost": -5 - } - ], - "id": 58 - }, - { - "display_name": "Cheaper War Scream", - "desc": "Reduce the Mana cost of War Scream", - "base_abil": 10, - "parents": [ - 52 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 31, - "col": 0, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "cost": -5 - } - ], - "id": 59 - }, - { - "display_name": "Discombobulate", - "desc": "Every time you hit an enemy, briefly increase your elemental damage dealt to them by +2 (Additive, Max +50). This bonus decays -5 every second", - "archetype": "Battle Monk", - "archetype_req": 11, - "parents": [ - 62 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 31, - "col": 2, - "icon": "node_3" - }, - "properties": {}, - "effects": [ - { - "type": "stat_scaling", - "slider": true, - "slider_name": "Hits dealt", - "output": [ - { - "type": "stat", - "name": "eDamAddMin" - }, - { - "type": "stat", - "name": "eDamAddMax" - }, - { - "type": "stat", - "name": "tDamAddMin" - }, - { - "type": "stat", - "name": "tDamAddMax" - }, - { - "type": "stat", - "name": "wDamAddMin" - }, - { - "type": "stat", - "name": "wDamAddMax" - }, - { - "type": "stat", - "name": "fDamAddMin" - }, - { - "type": "stat", - "name": "fDamAddMax" - }, - { - "type": "stat", - "name": "aDamAddMin" - }, - { - "type": "stat", - "name": "aDamAddMax" - } - ], - "scaling": [ - 2 - ], - "max": 50 - } - ], - "id": 60 - }, - { - "display_name": "Thunderclap", - "desc": "Bash will cast at the player's position and gain additional AoE.\n\n All elemental conversions become Thunder", - "archetype": "Battle Monk", - "archetype_req": 8, - "parents": [ - 62 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 32, - "col": 5, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "convert_spell_conv", - "target_part": "all", - "conversion": "Thunder" - }, - { - "type": "raw_stat", - "bonuses": [ - { - "type": "prop", - "abil_name": "Bash", - "name": "aoe", - "value": 3 - } - ] - } - ], - "id": 61 - }, - { - "display_name": "Cyclone", - "desc": "After casting War Scream, envelop yourself with a vortex that damages nearby enemies every 0.5s", - "archetype": "Battle Monk", - "archetype_req": 0, - "parents": [ - 54 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 31, - "col": 4, - "icon": "node_1" - }, - "properties": { - "aoe": 4, - "duration": 20 - }, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Cyclone", - "multipliers": [ - 10, - 0, - 0, - 0, - 5, - 10 - ] - }, - { - "type": "add_spell_prop", - "base_spell": 4, - "target_part": "Cyclone Total Damage", - "hits": { - "Cyclone": 40 - } - } - ], - "id": 62 - }, - { - "display_name": "Second Chance", - "desc": "When you receive a fatal blow, survive and regain 30% of your Health (10m Cooldown)", - "archetype": "Paladin", - "archetype_req": 12, - "parents": [ - 58 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 32, - "col": 7, - "icon": "node_3" - }, - "properties": {}, - "effects": [], - "id": 63 - }, - { - "display_name": "Blood Pact", - "desc": "If you do not have enough mana to cast a spell, spend health instead (0.6% health per mana)", - "archetype": "", - "archetype_req": 10, - "parents": [ - 59 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 34, - "col": 1, - "icon": "node_3" - }, - "properties": { - "health_cost": 0.6 - }, - "effects": [], - "id": 64 - }, - { - "display_name": "Haemorrhage", - "desc": "Reduce Blood Pact's health cost. (0.3% health per mana)", - "archetype": "Fallen", - "archetype_req": 0, - "base_abil": 64, - "parents": [ - 64 - ], - "dependencies": [ - 64 - ], - "blockers": [], - "cost": 1, - "display": { - "row": 35, - "col": 2, - "icon": "node_1" - }, - "properties": {}, - "effects": [ - { - "type": "raw_stat", - "bonuses": [ - { - "type": "prop", - "abil": 64, - "name": "health_cost", - "value": -0.3 - } - ] - } - ], - "id": 65 - }, - { - "display_name": "Brink of Madness", - "desc": "If your health is 25% full or less, gain +40% Resistance", - "parents": [ - 64, - 67 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 35, - "col": 4, - "icon": "node_2" - }, - "properties": {}, - "effects": [], - "id": 66 - }, - { - "display_name": "Cheaper Uppercut 2", - "desc": "Reduce the Mana cost of Uppercut", - "base_abil": 8, - "parents": [ - 63, - 66 - ], - "dependencies": [], - "blockers": [], - "cost": 1, - "display": { - "row": 35, - "col": 6, - "icon": "node_0" - }, - "properties": {}, - "effects": [ - { - "type": "add_spell_prop", - "base_spell": 3, - "cost": -5 - } - ], - "id": 67 - }, - { - "display_name": "Martyr", - "desc": "When you receive a fatal blow, all nearby allies become invincible", - "archetype": "Paladin", - "archetype_req": 0, - "parents": [ - 63 - ], - "dependencies": [], - "blockers": [], - "cost": 2, - "display": { - "row": 35, - "col": 8, - "icon": "node_1" - }, - "properties": { - "duration": 3, - "aoe": 12 - }, - "effects": [], - "id": 68 - } - ] -} - +const atrees={Archer:[{display_name:"Arrow Shield",desc:"Create a shield around you that deal damage and knockback mobs when triggered. (2 Charges)",parents:[60,34],dependencies:[],blockers:[],cost:1,display:{row:9,col:6},properties:{charges:2,duration:60,aoe:5e3},effects:[{type:"replace_spell",name:"Arrow Shield",cost:30,base_spell:4,display:"Total Damage",parts:[{name:"Shield Damage",type:"damage",multipliers:[90,0,0,0,0,10]},{name:"Total Damage",type:"total",hits:{"Shield Damage":2}}]}],id:0},{display_name:"Escape",desc:"Throw yourself backward to avoid danger. (Hold shift while escaping to cancel)",parents:[3],dependencies:[],blockers:[],cost:1,display:{row:7,col:4},properties:{aoe:0,range:0},effects:[{type:"replace_spell",name:"Escape",cost:25,base_spell:2,display:"",parts:[]}],id:1},{display_name:"Arrow Bomb",desc:"Throw a long-range arrow that explodes and deal high damage in a large area. (Self-damage for 25% of your DPS)",parents:[],dependencies:[],blockers:[],cost:1,display:{row:0,col:4},properties:{aoe:4.5,range:26},effects:[{type:"replace_spell",name:"Arrow Bomb",cost:50,base_spell:3,spell_type:"damage",scaling:"spell",display:"Total Damage",parts:[{name:"Arrow Bomb",type:"damage",multipliers:[160,0,0,0,20,0]},{name:"Total Damage",type:"total",hits:{"Arrow Bomb":1}}]}],id:2},{display_name:"Heart Shatter",desc:"If you hit a mob directly with Arrow Bomb, shatter its heart and deal bonus damage.",base_abil:2,parents:[31],dependencies:[],blockers:[],cost:1,display:{row:4,col:4},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Heart Shatter",multipliers:[100,0,0,0,0,0]},{type:"add_spell_prop",base_spell:3,target_part:"Total Damage",hits:{"Heart Shatter":1}}],id:3},{display_name:"Fire Creep",desc:"Arrow Bomb will leak a trail of fire for 6s, Damaging enemies that walk into it every 0.4s.",base_abil:2,parents:[68,39,5],dependencies:[],blockers:[],cost:2,display:{row:16,col:6},properties:{aoe:.8,duration:6},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Fire Creep",multipliers:[30,0,0,0,20,0]},{type:"add_spell_prop",base_spell:3,target_part:"Total Burn Damage",hits:{"Fire Creep":15}}],id:4},{display_name:"Bryophyte Roots",desc:"When you hit an enemy with Arrow Storm, create an area that slows them down and deals damage every 0.4s.",base_abil:7,archetype:"Trapper",archetype_req:1,parents:[4,35],dependencies:[7],blockers:[],cost:2,display:{row:16,col:8},properties:{aoe:2,duration:5},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Bryophyte Roots",cost:0,multipliers:[40,20,0,0,0,0]},{type:"add_spell_prop",base_spell:1,target_part:"Total Roots Damage",hits:{"Bryophyte Roots":12}}],id:5},{display_name:"Nimble String",desc:"Arrow Storm throw out +6 arrows per stream and shoot twice as fast.",base_abil:7,parents:[36,69],dependencies:[7],blockers:[68],cost:2,display:{row:15,col:2},properties:{},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Single Arrow",multipliers:[-15,0,0,0,0,0]},{type:"add_spell_prop",base_spell:1,target_part:"Single Stream",hits:{"Single Arrow":6}}],id:6},{display_name:"Arrow Storm",desc:"Shoot a stream of 8 arrows, dealing significant damage to close mobs and pushing them back.",parents:[58,34],dependencies:[],blockers:[],cost:1,display:{row:9,col:2},properties:{range:16},effects:[{type:"replace_spell",name:"Arrow Storm",cost:40,base_spell:1,spell_type:"damage",scaling:"spell",display:"Total Damage",parts:[{name:"Single Arrow",multipliers:[30,0,10,0,0,0]},{name:"Single Stream",hits:{"Single Arrow":8}},{name:"Total Damage",hits:{"Single Stream":1}}]}],id:7},{display_name:"Guardian Angels",desc:"Your protective arrows from Arrow Shield will become sentient bows, dealing damage up to 8 times each to nearby enemies. (Arrow Shield will no longer push nearby enemies)",archetype:"Boltslinger",archetype_req:3,base_abil:0,parents:[59,67],dependencies:[0],blockers:[],cost:2,display:{row:19,col:1},properties:{range:4,duration:60,shots:8,count:2},effects:[{type:"replace_spell",name:"Guardian Angels",base_spell:4,display:"Total Damage",parts:[{name:"Single Arrow",type:"damage",multipliers:[30,0,0,0,0,10]},{name:"Single Bow",type:"total",hits:{"Single Arrow":8}},{name:"Total Damage",type:"total",hits:{"Single Bow":2}}]}],id:8},{display_name:"Windy Feet",desc:"When casting Escape, give speed to yourself and nearby allies.",base_abil:1,parents:[7],dependencies:[],blockers:[],cost:1,display:{row:10,col:1},properties:{aoe:8,duration:120},effects:[{type:"stat_bonus",toggle:"Windy Feet",bonuses:[{type:"stat",name:"spd",value:20}]}],id:9},{display_name:"Basaltic Trap",desc:"When you hit the ground with Arrow Bomb, leave a Trap that damages enemies. (Max 2 Traps)",archetype:"Trapper",archetype_req:2,base_abil:2,parents:[5],dependencies:[],blockers:[],cost:2,display:{row:19,col:8},properties:{aoe:7,traps:2},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Basaltic Trap",multipliers:[140,30,0,0,30,0]}],id:10},{display_name:"Windstorm",desc:"Arrow Storm shoot +1 stream of arrows, and each stream shoots +2 arrows, effectively doubling its damage.",base_abil:7,parents:[8,33],dependencies:[],blockers:[68],cost:2,display:{row:21,col:1},properties:{},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Single Arrow",multipliers:[-10,0,-2,0,0,2]},{type:"add_spell_prop",base_spell:1,target_part:"Total Damage",hits:{"Single Stream":1}},{type:"add_spell_prop",base_spell:1,target_part:"Single Stream",cost:0,hits:{"Single Arrow":2}}],id:11},{display_name:"Grappling Hook",base_abil:1,desc:"When casting Escape, throw a hook that pulls you when hitting a block. If you hit an enemy, pull them towards you instead. (Escape will not throw you backward anymore)",archetype:"Trapper",archetype_req:0,parents:[61,40,33],dependencies:[],blockers:[20],cost:2,display:{row:21,col:5},properties:{range:26},effects:[],id:12},{display_name:"Implosion",desc:"Arrow bomb will pull enemies towards you. If a trap is nearby, it will pull them towards it instead. Increase Heart Shatter's damage.",archetype:"Trapper",archetype_req:0,base_abil:2,parents:[12,40],dependencies:[],blockers:[],cost:2,display:{row:22,col:6},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Heart Shatter",multipliers:[40,0,0,0,0,0]}],id:13},{display_name:"Twain's Arc",desc:"When you have 2+ Focus, holding shift will summon the Twain's Arc. Charge it up to shoot a destructive long-range beam. (Damage is dealt as Main Attack Damage)",archetype:"Sharpshooter",archetype_req:4,parents:[62,64],dependencies:[61],blockers:[],cost:2,display:{row:25,col:4},properties:{range:64,focusReq:2},effects:[{type:"replace_spell",name:"Twain's Arc",base_spell:5,scaling:"melee",use_atkspd:!1,display:"Single Shot",parts:[{name:"Single Shot",type:"damage",multipliers:[200,0,0,0,0,0]}]}],id:14},{display_name:"Fierce Stomp",desc:"When using Escape, hold shift to quickly drop down and deal damage.",archetype:"Boltslinger",archetype_req:0,base_abil:1,parents:[42,64],dependencies:[],blockers:[],cost:2,display:{row:26,col:1},properties:{aoe:4},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Fierce Stomp",cost:0,multipliers:[100,0,0,0,0,0]},{type:"add_spell_prop",base_spell:2,target_part:"Stomp Damage",cost:0,hits:{"Fierce Stomp":1},display:"Stomp Damage"}],id:15},{display_name:"Scorched Earth",desc:"Fire Creep become much stronger.",archetype:"Sharpshooter",archetype_req:0,parents:[14],dependencies:[4],blockers:[],cost:1,display:{row:26,col:5},properties:{duration:2,aoe:.4},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Fire Creep",multipliers:[10,0,0,0,5,0]}],id:16},{display_name:"Leap",desc:"When you double tap jump, leap foward. (2s Cooldown)",archetype:"Boltslinger",archetype_req:5,parents:[42,55],dependencies:[],blockers:[],cost:2,display:{row:28,col:0},properties:{cooldown:2},effects:[],id:17},{display_name:"Shocking Bomb",desc:"Arrow Bomb will not be affected by gravity, and all damage conversions become Thunder.",archetype:"Sharpshooter",archetype_req:5,base_abil:2,parents:[14,44,55],dependencies:[2],blockers:[],cost:2,display:{row:28,col:4},properties:{gravity:0},effects:[{type:"convert_spell_conv",target_part:"all",conversion:"Thunder"}],id:18},{display_name:"Mana Trap",desc:"Your Traps will give you 4 Mana per second when you stay close to them.",archetype:"Trapper",archetype_req:5,base_abil:2,parents:[43,44],dependencies:[4],blockers:[],cost:2,display:{row:28,col:8},properties:{range:12,manaRegen:4},effects:[{type:"add_spell_prop",base_spell:3,cost:10}],id:19},{display_name:"Escape Artist",desc:"When casting Escape, release 120 arrows towards the ground.",archetype:"Boltslinger",archetype_req:0,base_abil:1,parents:[46,17],dependencies:[],blockers:[12],cost:2,display:{row:31,col:0},properties:{},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Per Arrow",multipliers:[30,0,10,0,0,0]},{type:"add_spell_prop",target_part:"Max Damage (Escape Artist)",hits:{"Per Arrow":120},display:"Max Damage (Escape Artist)"}],id:20},{display_name:"Initiator",desc:"If you do not damage an enemy for 5s or more, your next sucessful hit will deal +50% damage and add +1 Focus.",archetype:"Sharpshooter",archetype_req:5,parents:[18,44,47],dependencies:[61],blockers:[],cost:2,display:{row:31,col:5},properties:{},effects:[],id:21},{display_name:"Call of the Hound",desc:"Arrow Shield summon a Hound that will attack and drag aggressive enemies towards your traps.",archetype:"Trapper",archetype_req:0,base_abil:0,parents:[21,47],dependencies:[0],blockers:[],cost:2,display:{row:32,col:7},properties:{},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Hound Damage",multipliers:[40,0,0,0,0,0]}],id:22},{display_name:"Arrow Hurricane",desc:"Arrow Storm will shoot +2 stream of arrows.",archetype:"Boltslinger",archetype_req:8,base_abil:7,parents:[48,20],dependencies:[],blockers:[68],cost:2,display:{row:33,col:0},properties:{},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Total Damage",hits:{"Single Stream":2}}],id:23},{display_name:"Geyser Stomp",desc:"Fierce Stomp will create geysers, dealing more damage and vertical knockback.",base_abil:1,parents:[56],dependencies:[15],blockers:[],cost:2,display:{row:37,col:1},properties:{},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Geyser Stomp",multipliers:[0,0,0,50,0,0]},{type:"add_spell_prop",base_spell:2,target_part:"Stomp Damage",hits:{"Geyser Stomp":1}},{type:"raw_stat",bonuses:[{type:"prop",abil:15,name:"aoe",value:1}]}],id:24},{display_name:"Crepuscular Ray",desc:"If you have 5 Focus, casting Arrow Storm will make you levitate and shoot 20 homing arrows per second until you run out of Focus. While in that state, you will lose 1 Focus per second.",archetype:"Sharpshooter",archetype_req:10,parents:[49],dependencies:[7],blockers:[],cost:2,display:{row:37,col:4},properties:{},effects:[{type:"replace_spell",name:"Crepuscular Ray",base_spell:6,display:"DPS",parts:[{name:"Single Arrow",multipliers:[10,0,0,5,0,0]},{name:"DPS",hits:{"Single Arrow":20}},{name:"Total Damage",hits:{DPS:7}}]}],id:25},{display_name:"Grape Bomb",desc:"Arrow bomb will throw 3 additional smaller bombs when exploding.",base_abil:2,parents:[51],dependencies:[],blockers:[],cost:2,display:{row:37,col:7},properties:{aoe:2},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Grape Bomb",multipliers:[30,0,0,0,10,0]},{type:"add_spell_prop",base_spell:3,target_part:"Total Damage",hits:{"Grape Bomb":3}}],id:26},{display_name:"Tangled Traps",desc:"Your Traps will be connected by a rope that deals damage to enemies every 0.2s.",archetype:"Trapper",archetype_req:0,parents:[26],dependencies:[10],blockers:[],cost:2,display:{row:38,col:6},properties:{attackSpeed:.2},effects:[{type:"replace_spell",name:"Tangled Traps",base_spell:7,display:"DPS",parts:[{name:"Damage Tick",multipliers:[20,0,0,0,0,20]},{name:"DPS",hits:{"Damage Tick":5}}]}],id:27},{display_name:"Snow Storm",desc:"Enemies near you will be slowed down.",parents:[24,63],dependencies:[],blockers:[],cost:2,display:{row:39,col:2},properties:{range:2.5,slowness:.3},effects:[],id:28},{display_name:"All-Seeing Panoptes",desc:"Your bows from Guardian Angels become all-seeing, increasing their range, damage and letting them shoot up to +5 times each.",archetype:"Boltslinger",archetype_req:11,base_abil:0,parents:[28],dependencies:[8],blockers:[],cost:2,display:{row:40,col:1},properties:{range:8,shots:5},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Single Arrow",multipliers:[0,0,0,0,10,0]},{type:"add_spell_prop",base_spell:4,target_part:"Single Bow",hits:{"Single Arrow":5}}],id:29},{display_name:"Minefield",desc:"Allow you to place +6 Traps, but with reduced damage and range.",archetype:"Trapper",archetype_req:10,base_abil:2,parents:[26,53],dependencies:[10],blockers:[],cost:2,display:{row:40,col:7},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Basaltic Trap",cost:0,multipliers:[-80,0,0,0,0,0]},{type:"raw_stat",bonuses:[{type:"prop",abil:10,name:"aoe",value:-2},{type:"prop",abil:10,name:"traps",value:6}]}],id:30},{display_name:"Bow Proficiency I",desc:"Improve your Main Attack's damage and range when using a bow.",base_abil:999,parents:[2],dependencies:[],blockers:[],cost:1,display:{row:2,col:4},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"mdPct",value:5}]}],id:31},{display_name:"Cheaper Arrow Bomb",desc:"Reduce the Mana cost of Arrow Bomb.",base_abil:2,parents:[31],dependencies:[],blockers:[],cost:1,display:{row:2,col:6},properties:{},effects:[{type:"add_spell_prop",base_spell:3,cost:-10}],id:32},{display_name:"Cheaper Arrow Storm",desc:"Reduce the Mana cost of Arrow Storm.",base_abil:7,parents:[12,11,61],dependencies:[],blockers:[],cost:1,display:{row:21,col:3},properties:{},effects:[{type:"add_spell_prop",base_spell:1,cost:-5}],id:33},{display_name:"Cheaper Escape",desc:"Reduce the Mana cost of Escape.",base_abil:1,parents:[7,0],dependencies:[],blockers:[],cost:1,display:{row:9,col:4,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:2,cost:-5}],id:34},{display_name:"Earth Mastery",desc:"Increases your base damage from all Earth attacks",archetype:"Trapper",archetype_req:0,parents:[0],dependencies:[],blockers:[],cost:1,display:{row:13,col:8,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"eDamPct",value:20},{type:"stat",name:"eDamAddMin",value:2},{type:"stat",name:"eDamAddMax",value:4}]}],id:35},{display_name:"Thunder Mastery",desc:"Increases your base damage from all Thunder attacks",archetype:"Boltslinger",archetype_req:0,parents:[7,39,34],dependencies:[],blockers:[],cost:1,display:{row:13,col:2,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"tDamPct",value:10},{type:"stat",name:"tDamAddMin",value:1},{type:"stat",name:"tDamAddMax",value:8}]}],id:36},{display_name:"Water Mastery",desc:"Increases your base damage from all Water attacks",archetype:"Sharpshooter",archetype_req:0,parents:[34,36,39],dependencies:[],blockers:[],cost:1,display:{row:14,col:4,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"wDamPct",value:15},{type:"stat",name:"wDamAddMin",value:2},{type:"stat",name:"wDamAddMax",value:4}]}],id:37},{display_name:"Air Mastery",desc:"Increases base damage from all Air attacks",archetype:"Boltslinger",archetype_req:0,parents:[7],dependencies:[],blockers:[],cost:1,display:{row:13,col:0,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"aDamPct",value:15},{type:"stat",name:"aDamAddMin",value:3},{type:"stat",name:"aDamAddMax",value:4}]}],id:38},{display_name:"Fire Mastery",desc:"Increases base damage from all Earth attacks",archetype:"Sharpshooter",archetype_req:0,parents:[36,0,34],dependencies:[],blockers:[],cost:1,display:{row:13,col:6,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"fDamPct",value:15},{type:"stat",name:"fDamAddMin",value:3},{type:"stat",name:"fDamAddMax",value:5}]}],id:39},{display_name:"More Shields",desc:"Give +2 charges to Arrow Shield.",base_abil:0,parents:[12,10],dependencies:[0],blockers:[],cost:1,display:{row:21,col:7,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Total Damage",hits:{"Shield Damage":2}},{type:"raw_stat",bonuses:[{type:"prop",abil:0,name:"charges",value:2}]}],id:40},{display_name:"Stormy Feet",desc:"Windy Feet will last longer and add more speed.",base_abil:1,parents:[11],dependencies:[9],blockers:[],cost:1,display:{row:23,col:1,icon:"node_0"},properties:{duration:60},effects:[{type:"stat_bonus",toggle:"Windy Feet",bonuses:[{type:"stat",name:"spdPct",value:20}]}],id:41},{display_name:"Refined Gunpowder",desc:"Increase the damage of Arrow Bomb.",base_abil:2,parents:[11],dependencies:[],blockers:[],cost:1,display:{row:25,col:0,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Arrow Bomb",multipliers:[50,0,0,0,0,0]}],id:42},{display_name:"More Traps",desc:"Increase the maximum amount of active Traps you can have by +2.",archetype:"Trapper",archetype_req:10,base_abil:2,parents:[54],dependencies:[10],blockers:[],cost:1,display:{row:26,col:8,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"prop",abil:10,name:"traps",value:2}]}],id:43},{display_name:"Better Arrow Shield",desc:"Arrow Shield will gain additional area of effect, knockback and damage.",archetype:"Sharpshooter",archetype_req:0,base_abil:0,parents:[19,18,14],dependencies:[0],blockers:[],cost:1,display:{row:28,col:6,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Arrow Shield",multipliers:[40,0,0,0,0,0]},{type:"raw_stat",bonuses:[{type:"prop",abil:0,name:"aoe",value:1}]}],id:44},{display_name:"Better Leap",desc:"Reduce leap's cooldown by 1s.",archetype:"Boltslinger",archetype_req:0,base_abil:17,parents:[17,55],dependencies:[17],blockers:[],cost:1,display:{row:29,col:1,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"prop",abil:17,name:"cooldown",value:-1}]}],id:45},{display_name:"Better Guardian Angels",desc:"Your Guardian Angels can shoot +4 arrows before disappearing.",archetype:"Boltslinger",archetype_req:0,base_abil:0,parents:[20,55],dependencies:[8],blockers:[],cost:1,display:{row:31,col:2,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Single Bow",hits:{"Single Arrow":4}}],id:46},{display_name:"Cheaper Arrow Storm (2)",desc:"Reduce the Mana cost of Arrow Storm.",base_abil:7,parents:[21,19],dependencies:[],blockers:[],cost:1,display:{row:31,col:8,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:1,cost:-5}],id:47},{display_name:"Precise Shot",desc:"+30% Critical Hit Damage",parents:[46,49,23],dependencies:[],blockers:[],cost:1,display:{row:33,col:2,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"mdCritPct",value:30}]}],id:48},{display_name:"Cheaper Arrow Shield",desc:"Reduce the Mana cost of Arrow Shield.",base_abil:0,parents:[48,21],dependencies:[],blockers:[],cost:1,display:{row:33,col:4,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,cost:-5}],id:49},{display_name:"Rocket Jump",desc:"Arrow Bomb's self-damage will knockback you farther away.",base_abil:2,parents:[47,21],dependencies:[2],blockers:[],cost:1,display:{row:33,col:6,icon:"node_0"},properties:{},effects:[],id:50},{display_name:"Cheaper Escape (2)",desc:"Reduce the Mana cost of Escape.",base_abil:1,parents:[22,70],dependencies:[],blockers:[],cost:1,display:{row:34,col:7,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:2,cost:-5}],id:51},{display_name:"Stronger Hook",desc:"Increase your Grappling Hook's range, speed and strength.",archetype:"Trapper",archetype_req:5,base_abil:1,parents:[51],dependencies:[12],blockers:[],cost:1,display:{row:35,col:8,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"prop",abil:12,name:"range",value:8}]}],id:52},{display_name:"Cheaper Arrow Bomb (2)",desc:"Reduce the Mana cost of Arrow Bomb.",base_abil:2,parents:[63,30],dependencies:[],blockers:[],cost:1,display:{row:40,col:5,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,cost:-5}],id:53},{display_name:"Bouncing Bomb",desc:"Arrow Bomb will bounce once when hitting a block or enemy",base_abil:2,parents:[40],dependencies:[],blockers:[],cost:2,display:{row:25,col:7,icon:"node_2"},properties:{},effects:[],id:54},{display_name:"Homing Shots",desc:"Your Main Attack arrows will follow nearby enemies and not be affected by gravity",base_abil:999,parents:[17,18],dependencies:[],blockers:[],cost:2,display:{row:28,col:2,icon:"node_2"},properties:{},effects:[],id:55},{display_name:"Shrapnel Bomb",desc:"Arrow Bomb's explosion will fling 15 shrapnel, dealing damage in a large area",archetype:"Boltslinger",archetype_req:8,base_abil:2,parents:[23,48],dependencies:[],blockers:[],cost:2,display:{row:34,col:1,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Shrapnel Bomblet",multipliers:[40,0,0,0,20,0]}],id:56},{display_name:"Elusive",desc:"If you do not get hit for 8+ seconds, become immune to self-damage and remove Arrow Storm's recoil. (Dodging counts as not getting hit)",archetype:"Boltslinger",archetype_req:0,parents:[24],dependencies:[],blockers:[],cost:2,display:{row:38,col:0,icon:"node_1"},properties:{},effects:[],id:57},{display_name:"Double Shots",desc:"Double Main Attack arrows, but they deal -30% damage per arrow (harder to hit far enemies)",archetype:"Boltslinger",archetype_req:0,base_abil:999,parents:[1],dependencies:[],blockers:[60],cost:1,display:{row:7,col:2,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:0,target_part:"Single Shot",multipliers:[-30,0,0,0,0,0]},{type:"add_spell_prop",base_spell:0,target_part:"Total Damage",hits:{"Single Shot":2},display:"Total Damage"}],id:58},{display_name:"Triple Shots",desc:"Triple Main Attack arrows, but they deal -20% damage per arrow",archetype:"Boltslinger",archetype_req:0,base_abil:999,parents:[69,67],dependencies:[58],blockers:[],cost:1,display:{row:17,col:0,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:0,target_part:"Single Shot",multipliers:[-20,0,0,0,0,0]},{type:"add_spell_prop",base_spell:0,target_part:"Total Damage",hits:{"Single Shot":1},display:"Total Damage"}],id:59},{display_name:"Power Shots",desc:"Main Attack arrows have increased speed and knockback",archetype:"Sharpshooter",archetype_req:0,base_abil:999,parents:[1],dependencies:[],blockers:[58],cost:1,display:{row:7,col:6,icon:"node_0"},properties:{},effects:[],id:60},{display_name:"Focus",desc:"When hitting an aggressive mob 5+ blocks away, gain +1 Focus (Max 3). Resets if you miss once",archetype:"Sharpshooter",archetype_req:2,parents:[68],dependencies:[],blockers:[],cost:2,display:{row:19,col:4,icon:"node_2"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Focus",output:{type:"stat",name:"damMult"},scaling:[35],max:3}],id:61},{display_name:"More Focus",desc:"Add +2 max Focus",archetype:"Sharpshooter",archetype_req:0,parents:[33,12],dependencies:[],blockers:[],cost:1,display:{row:22,col:4,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Focus",output:{type:"stat",name:"damMult"},scaling:[30],max:5}],id:62},{display_name:"More Focus (2)",desc:"Add +2 max Focus",archetype:"Sharpshooter",archetype_req:0,parents:[25,28],dependencies:[],blockers:[],cost:1,display:{row:39,col:4,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Focus",output:{type:"stat",name:"damMult"},scaling:[25],max:7}],id:63},{display_name:"Traveler",desc:"For every 1% Walk Speed you have from items, gain +1 Raw Spell Damage (Max 100)",parents:[42,14],dependencies:[],blockers:[],cost:1,display:{row:25,col:2,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!1,inputs:[{type:"stat",name:"spd"}],output:{type:"stat",name:"sdRaw"},scaling:[1],max:100}],id:64},{display_name:"Patient Hunter",desc:"Your Traps will deal +20% more damage for every second they are active (Max +80%)",archetype:"Trapper",archetype_req:0,base_abil:2,parents:[40],dependencies:[10],blockers:[],cost:2,display:{row:22,col:8,icon:"node_1"},properties:{max:80},effects:[{type:"stat_scaling",slider:!0,slider_name:"Trap Wait Time",output:{type:"stat",name:"damMult:Basaltic Trap"},slider_step:1,scaling:[20],max:80}],id:65},{display_name:"Stronger Patient Hunter",desc:"Add +80% Max Damage to Patient Hunter",archetype:"Trapper",archetype_req:0,base_abil:2,parents:[26],dependencies:[65],blockers:[],cost:1,display:{row:38,col:8,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Trap Wait Time",output:{type:"stat",name:"damMult:Basaltic Trap"},scaling:[20],max:80},{type:"raw_stat",bonuses:[{type:"prop",abil:65,name:"max",value:80}]}],id:66},{display_name:"Frenzy",desc:"Every time you hit an enemy, briefly gain +6% Walk Speed (Max 200%). Decay -40% of the bonus every second",archetype:"Boltslinger",archetype_req:0,parents:[59,6],dependencies:[],blockers:[],cost:2,display:{row:17,col:2,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Hits dealt",output:{type:"stat",name:"spd"},scaling:[6],max:200}],id:67},{display_name:"Phantom Ray",desc:"Condense Arrow Storm into a single ray that damages enemies 10 times per second",archetype:"Sharpshooter",archetype_req:0,parents:[37,4],dependencies:[7],blockers:[11,6,23],cost:2,display:{row:16,col:4,icon:"node_2"},properties:{},effects:[{type:"replace_spell",name:"Phantom Ray",base_spell:1,spell_type:"damage",scaling:"spell",display:"Total Damage",parts:[{name:"Single Arrow",type:"damage",multipliers:[25,0,5,0,0,0]},{name:"Total Damage",type:"total",hits:{"Single Arrow":16}}]},{type:"add_spell_prop",base_spell:1,cost:-10}],id:68},{display_name:"Arrow Rain",desc:"When Arrow Shield loses its last charge, unleash 200 arrows raining down on enemies",base_abil:0,parents:[6,38],dependencies:[0],blockers:[],cost:2,display:{row:15,col:0,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Arrow Rain (Per Arrow)",multipliers:[120,0,0,0,0,80]},{type:"add_spell_prop",base_spell:4,target_part:"Arrow Rain (Total)",hits:{"Arrow Rain (Per Arrow)":200}}],id:69},{display_name:"Decimator",desc:"Phantom Ray will increase its damage by 10% everytime you do not miss with it (Max 50%)",archetype:"Sharpshooter",archetype_req:0,parents:[49],dependencies:[68],blockers:[],cost:1,display:{row:34,col:5,icon:"node_1"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Phantom Ray hits",output:{type:"stat",name:"damMult:Single Arrow"},scaling:10,max:50}],id:70}],Warrior:[{display_name:"Bash",desc:"Violently bash the ground, dealing high damage in a large area",parents:[],dependencies:[],blockers:[],cost:1,display:{row:0,col:4,icon:"node_4"},properties:{aoe:4,range:3},effects:[{type:"replace_spell",name:"Bash",cost:45,base_spell:1,spell_type:"damage",scaling:"spell",display:"Total Damage",parts:[{name:"Single Hit",type:"damage",multipliers:[130,20,0,0,0,0]},{name:"Total Damage",type:"total",hits:{"Single Hit":1}}]}],id:0},{display_name:"Spear Proficiency 1",desc:"Improve your Main Attack's damage and range w/ spear",base_abil:999,parents:[0],dependencies:[],blockers:[],cost:1,display:{row:2,col:4,icon:"node_0"},properties:{melee_range:1},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"mdPct",value:5}]}],id:1},{display_name:"Cheaper Bash",desc:"Reduce the Mana cost of Bash",base_abil:0,parents:[1],dependencies:[],blockers:[],cost:1,display:{row:2,col:2,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:1,cost:-10}],id:2},{display_name:"Double Bash",desc:"Bash will hit a second time at a farther range",parents:[1],base_abil:0,dependencies:[],blockers:[],cost:1,display:{row:4,col:4,icon:"node_1"},properties:{range:3},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Total Damage",cost:0,hits:{"Single Hit":1}},{type:"add_spell_prop",base_spell:1,target_part:"Single Hit",cost:0,multipliers:[-50,0,0,0,0,0]}],id:3},{display_name:"Charge",desc:"Charge forward at high speed (hold shift to cancel)",parents:[3],dependencies:[],blockers:[],cost:1,display:{row:6,col:4,icon:"node_4"},properties:{},effects:[{type:"replace_spell",name:"Charge",cost:25,base_spell:2,spell_type:"damage",scaling:"spell",display:"",parts:[]}],id:4},{display_name:"Heavy Impact",desc:"After using Charge, violently crash down into the ground and deal damage",base_abil:4,parents:[8],dependencies:[],blockers:[],cost:1,display:{row:9,col:1,icon:"node_1"},properties:{aoe:4},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Heavy Impact",cost:0,multipliers:[100,0,0,0,0,0]},{type:"add_spell_prop",base_spell:2,target_part:"Contact Damage",display:"Contact Damage",hits:{"Heavy Impact":1}}],id:5},{display_name:"Vehement",desc:"For every 1% or 1 Raw Main Attack Damage you have from items, gain +2% Walk Speed (Max 20%)",archetype:"Fallen",archetype_req:0,parents:[4],dependencies:[],blockers:[7],cost:1,display:{row:6,col:2,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!1,inputs:[{type:"stat",name:"mdPct"},{type:"stat",name:"mdRaw"}],output:{type:"stat",name:"spd"},scaling:[1,1],max:20}],id:6},{display_name:"Tougher Skin",desc:"Harden your skin and become permanently +5% more resistant\nFor every 1% or 1 Raw Heath Regen you have from items, gain +10 Health (Max 100)",archetype:"Paladin",archetype_req:0,parents:[4],dependencies:[],blockers:[6],cost:1,display:{row:6,col:6,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"baseResist",value:5}]},{type:"stat_scaling",slider:!1,inputs:[{type:"stat",name:"hprRaw"},{type:"stat",name:"hprPct"}],output:{type:"stat",name:"hpBonus"},scaling:[10,10],max:100}],id:7},{display_name:"Uppercut",desc:"Rocket enemies in the air and deal massive damage",parents:[6,9],dependencies:[],blockers:[],cost:1,display:{row:8,col:2,icon:"node_4"},properties:{aoe:3,range:5},effects:[{type:"replace_spell",name:"Uppercut",cost:45,base_spell:3,spell_type:"damage",scaling:"spell",display:"Total Damage",parts:[{name:"Uppercut",multipliers:[150,50,50,0,0,0]},{name:"Total Damage",hits:{Uppercut:1}}]}],id:8},{display_name:"Cheaper Charge",desc:"Reduce the Mana cost of Charge",base_abil:4,parents:[8,10],dependencies:[],blockers:[],cost:1,display:{row:8,col:4,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:2,cost:-5}],id:9},{display_name:"War Scream",desc:"Emit a terrorizing roar that deals damage, pull nearby enemies, and add damage resistance to yourself and allies",parents:[7,9],dependencies:[],blockers:[],cost:1,display:{row:8,col:6,icon:"node_4"},properties:{duration:30,aoe:12,defense_bonus:10},effects:[{type:"replace_spell",name:"War Scream",cost:35,base_spell:4,spell_type:"damage",scaling:"spell",display:"Total Damage",parts:[{name:"War Scream",multipliers:[50,0,0,0,50,0]},{name:"Total Damage",hits:{"War Scream":1}}]}],id:10},{display_name:"Earth Mastery",desc:"Increases base damage from all Earth attacks",archetype:"Fallen",archetype_req:0,parents:[8],dependencies:[],blockers:[],cost:1,display:{row:10,col:0,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"eDamPct",value:20},{type:"stat",name:"eDamAddMin",value:2},{type:"stat",name:"eDamAddMax",value:4}]}],id:11},{display_name:"Thunder Mastery",desc:"Increases base damage from all Thunder attacks",archetype:"Fallen",archetype_req:0,parents:[8,14,9],dependencies:[],blockers:[],cost:1,display:{row:10,col:2,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"tDamPct",value:10},{type:"stat",name:"tDamAddMin",value:1},{type:"stat",name:"tDamAddMax",value:8}]}],id:12},{display_name:"Water Mastery",desc:"Increases base damage from all Water attacks",archetype:"Battle Monk",archetype_req:0,parents:[9,12,14],dependencies:[],blockers:[],cost:1,display:{row:11,col:4,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"wDamPct",value:15},{type:"stat",name:"wDamAddMin",value:2},{type:"stat",name:"wDamAddMax",value:4}]}],id:13},{display_name:"Air Mastery",desc:"Increases base damage from all Air attacks",archetype:"Battle Monk",archetype_req:0,parents:[10,12,9],dependencies:[],blockers:[],cost:1,display:{row:10,col:6,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"aDamPct",value:15},{type:"stat",name:"aDamAddMin",value:3},{type:"stat",name:"aDamAddMax",value:4}]}],id:14},{display_name:"Fire Mastery",desc:"Increases base damage from all Earth attacks",archetype:"Paladin",archetype_req:0,parents:[10],dependencies:[],blockers:[],cost:1,display:{row:10,col:8,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"fDamPct",value:15},{type:"stat",name:"fDamAddMin",value:3},{type:"stat",name:"fDamAddMax",value:5}]}],id:15},{display_name:"Quadruple Bash",desc:"Bash will hit 4 times at an even larger range",archetype:"Fallen",archetype_req:0,base_abil:0,parents:[11,17],dependencies:[],blockers:[],cost:2,display:{row:12,col:0,icon:"node_1"},properties:{range:6},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Total Damage",hits:{"Single Hit":2}},{type:"add_spell_prop",base_spell:1,target_part:"Single Hit",multipliers:[-20,0,0,0,0,0]}],id:16},{display_name:"Fireworks",desc:"Mobs hit by Uppercut will explode mid-air and receive additional damage",archetype:"Fallen",archetype_req:0,base_abil:8,parents:[12,16],dependencies:[],blockers:[],cost:2,display:{row:12,col:2,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Fireworks",multipliers:[80,0,20,0,0,0]},{type:"add_spell_prop",base_spell:3,target_part:"Total Damage",hits:{Fireworks:1}}],id:17},{display_name:"Half-Moon Swipe",desc:"Uppercut will deal a footsweep attack at a longer and wider angle. All elemental conversions become Water",archetype:"Battle Monk",archetype_req:1,base_abil:8,parents:[13],dependencies:[8],blockers:[],cost:2,display:{row:13,col:4,icon:"node_1"},properties:{range:4},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Uppercut",cost:-10,multipliers:[-70,0,0,0,0,0]},{type:"convert_spell_conv",target_part:"all",conversion:"Water"}],id:18},{display_name:"Flyby Jab",desc:"Damage enemies in your way when using Charge",base_abil:4,parents:[14,20],dependencies:[],blockers:[],cost:2,display:{row:12,col:6,icon:"node_1"},properties:{aoe:2},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Flyby Jab",multipliers:[20,0,0,0,0,40]},{type:"add_spell_prop",base_spell:2,target_part:"Contact Damage",display:"Contact Damage",hits:{"Flyby Jab":1}}],id:19},{display_name:"Flaming Uppercut",desc:"Uppercut will light mobs on fire, dealing damage every 0.6 seconds",archetype:"Paladin",archetype_req:0,base_abil:8,parents:[15,19],dependencies:[8],blockers:[],cost:2,display:{row:12,col:8,icon:"node_1"},properties:{duration:3,tick:.6},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Flaming Uppercut",multipliers:[0,0,0,0,50,0]},{type:"add_spell_prop",base_spell:3,target_part:"Flaming Uppercut Total Damage",hits:{"Flaming Uppercut":5}},{type:"add_spell_prop",base_spell:3,target_part:"Total Damage",hits:{"Flaming Uppercut":5}}],id:20},{display_name:"Iron Lungs",desc:"War Scream deals more damage",base_abil:10,parents:[19,20],dependencies:[],blockers:[],cost:1,display:{row:13,col:7,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,target_part:"War Scream",cost:0,multipliers:[30,0,0,0,0,30]}],id:21},{display_name:"Generalist",desc:"After casting 3 different spells in a row, your next spell will cost 5 mana",archetype:"Battle Monk",archetype_req:3,parents:[23],dependencies:[],blockers:[],cost:2,display:{row:15,col:2,icon:"node_3"},properties:{},effects:[],id:22},{display_name:"Counter",desc:"When dodging a nearby enemy attack, get 30% chance to instantly attack back",archetype:"Battle Monk",archetype_req:0,parents:[18],dependencies:[],blockers:[],cost:2,display:{row:15,col:4,icon:"node_1"},properties:{chance:30},effects:[{type:"replace_spell",name:"Counter",base_spell:5,display:"Counter Damage",parts:[{name:"Counter Damage",multipliers:[60,0,20,0,0,20]}]}],id:23},{display_name:"Mantle of the Bovemists",desc:"When casting War Scream, create a holy shield around you that reduces all incoming damage by 70% for 3 hits (20s cooldown)",archetype:"Paladin",archetype_req:3,parents:[21],dependencies:[10],blockers:[],cost:2,display:{row:15,col:7,icon:"node_3"},properties:{mantle_charge:3},effects:[{type:"raw_stat",toggle:!0,bonuses:[{type:"stat",name:"defPct",value:70}]}],id:24},{display_name:"Bak'al's Grasp",desc:"After casting War Scream, become Corrupted (15s Cooldown). You cannot heal while in that state\n\nWhile Corrupted, every 2% of Health you lose will add +4 Raw Damage to your attacks (Max 120)",archetype:"Fallen",archetype_req:2,parents:[16,17],dependencies:[10],blockers:[],cost:2,display:{row:16,col:1,icon:"node_3"},properties:{cooldown:15},effects:[{type:"stat_scaling",slider:!0,slider_name:"Corrupted",output:{type:"stat",name:"damRaw"},scaling:[4],slider_step:1,max:120}],id:25},{display_name:"Spear Proficiency 2",desc:"Improve your Main Attack's damage and range w/ spear",base_abil:999,parents:[25,27],dependencies:[],blockers:[],cost:1,display:{row:17,col:0,icon:"node_0"},properties:{melee_range:1},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"mdPct",value:5}]}],id:26},{display_name:"Cheaper Uppercut",desc:"Reduce the Mana Cost of Uppercut",base_abil:8,parents:[26,28,23],dependencies:[],blockers:[],cost:1,display:{row:17,col:3,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,cost:-5}],id:27},{display_name:"Aerodynamics",desc:"During Charge, you can steer and change direction",archetype:"Battle Monk",archetype_req:0,base_abil:4,parents:[27,29],dependencies:[],blockers:[],cost:2,display:{row:17,col:5,icon:"node_1"},properties:{},effects:[],id:28},{display_name:"Provoke",desc:"Mobs damaged by War Scream will target only you for at least 5s \n\nReduce the Mana cost of War Scream",archetype:"Paladin",archetype_req:0,base_abil:10,parents:[28,24],dependencies:[],blockers:[],cost:1,display:{row:17,col:7,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,cost:-5}],id:29},{display_name:"Precise Strikes",desc:"+30% Critical Hit Damage",parents:[27,26],dependencies:[],blockers:[],cost:1,display:{row:18,col:2,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"critDamPct",value:30}]}],id:30},{display_name:"Air Shout",desc:"War Scream will fire a projectile that can go through walls and deal damage multiple times",base_abil:10,parents:[28,29],dependencies:[10],blockers:[],cost:2,display:{row:18,col:6,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Air Shout",multipliers:[20,0,0,0,0,5]}],id:31},{display_name:"Enraged Blow",desc:"While Corriupted, every 1% of Health you lose will increase your damage by +3% (Max 300%)",archetype:"Fallen",archetype_req:0,parents:[26],dependencies:[25],blockers:[],cost:2,display:{row:20,col:0,icon:"node_2"},properties:{},effects:[{type:"stat_scaling",slider:!1,inputs:[{type:"stat",name:"hpBonus"}],output:{type:"stat",name:"damMult"},scaling:[3],max:300}],id:32},{display_name:"Flying Kick",desc:"When using Charge, mobs hit will halt your momentum and get knocked back",archetype:"Battle Monk",archetype_req:1,base_abil:4,parents:[27,34],dependencies:[],blockers:[],cost:2,display:{row:20,col:3,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Flying Kick",multipliers:[120,0,0,10,0,20]},{type:"add_spell_prop",base_spell:2,target_part:"Flying Kick Max Damage",hits:{"Flying Kick":1},display:"Flying Kick Max Damage"}],id:33},{display_name:"Stronger Mantle",desc:"Add +2 additional charges to Mantle of the Bovemists",archetype:"Paladin",archetype_req:0,parents:[35,33],dependencies:[24],blockers:[],cost:1,display:{row:20,col:6,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"prop",abil:24,name:"mantle_charge",value:2}]}],id:34},{display_name:"Manachism",desc:"If you receive a hit that's less than 5% of your max HP, gain 10 Mana (1s Cooldown)",archetype:"Paladin",archetype_req:3,parents:[34,29],dependencies:[],blockers:[],cost:2,display:{row:20,col:8,icon:"node_2"},properties:{cooldown:1},effects:[],id:35},{display_name:"Boiling Blood",desc:"Bash leaves a trail of boiling blood behind its first explosion, slowing down and damaging enemies above it every 0.4 seconds",archetype:"",archetype_req:0,parents:[32,37],dependencies:[],blockers:[],cost:2,display:{row:22,col:0,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Boiling Blood",cost:0,multipliers:[25,0,0,0,5,0]}],id:36},{display_name:"Ragnarokkr",desc:"War Scream become deafening, increasing its range and giving damage bonus to players",archetype:"Fallen",archetype_req:0,base_abil:10,parents:[36,33],dependencies:[10],blockers:[],cost:2,display:{row:22,col:2,icon:"node_2"},properties:{aoe:2},effects:[{type:"add_spell_prop",base_spell:4,cost:10},{type:"raw_stat",toggle:!0,bonuses:[{type:"stat",name:"damMult",value:30}]}],id:37},{display_name:"Ambidextrous",desc:"Increase your chance to attack with Counter by +30%",base_abil:23,parents:[33,34,39],dependencies:[23],blockers:[],cost:1,display:{row:22,col:4,icon:"node_0"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"prop",abil:23,name:"chance",value:30}]}],id:38},{display_name:"Burning Heart",desc:"For every 100 Health Bonus you have from item IDs, gain +2% Fire Damage (Max 100%)",archetype:"Paladin",archetype_req:0,parents:[38,40],dependencies:[],blockers:[],cost:1,display:{row:22,col:6,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!1,inputs:[{type:"stat",name:"hpBonus"}],output:{type:"stat",name:"fDamPct"},scaling:[2],max:100}],id:39},{display_name:"Stronger Bash",desc:"Increase the damage of Bash",base_abil:0,parents:[39,35],dependencies:[],blockers:[],cost:1,display:{row:22,col:8,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:1,target_part:"Single Hit",multipliers:[30,0,0,0,0,0]}],id:40},{display_name:"Intoxicating Blood",desc:"After leaving Corrupted, gain 2% of the health lost back for each enemy killed while Corrupted",archetype:"Fallen",archetype_req:5,base_abil:25,parents:[37,36],dependencies:[25],blockers:[],cost:2,display:{row:23,col:1,icon:"node_1"},properties:{},effects:[],id:41},{display_name:"Comet",desc:"After being hit by Fireworks, enemies will crash into the ground and receive more damage",archetype:"Fallen",archetype_req:0,base_abil:8,parents:[37],dependencies:[17],blockers:[],cost:2,display:{row:24,col:2,icon:"node_1"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Comet",cost:0,multipliers:[80,20,0,0,0,0]},{type:"add_spell_prop",base_spell:3,target_part:"Total Damage",cost:0,hits:{Comet:1}}],id:42},{display_name:"Collide",desc:"Mobs thrown into walls from Flying Kick will explode and receive additonal damage",archetype:"Battle Monk",archetype_req:4,base_abil:4,parents:[38,39],dependencies:[33],blockers:[],cost:2,display:{row:23,col:5,icon:"node_1"},properties:{aoe:4},effects:[{type:"add_spell_prop",base_spell:2,target_part:"Collide",cost:0,multipliers:[100,0,0,0,50,0]},{type:"add_spell_prop",base_spell:2,target_part:"Flying Kick Max Damage",hits:{Collide:1}}],id:43},{display_name:"Rejuvenating Skin",desc:"Regain back 30% of the damage you take as healing over 30s",archetype:"Paladin",archetype_req:0,parents:[39,40],dependencies:[],blockers:[],cost:2,display:{row:23,col:7,icon:"node_3"},properties:{},effects:[],id:44},{display_name:"Uncontainable Corruption",desc:"Reduce the cooldown of Bak'al's Grasp by -5s, and increase the raw damage gained for every 2% of health lost by +1",base_abil:25,parents:[36,46],dependencies:[25],blockers:[],cost:1,display:{row:26,col:0,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Corrupted",output:{type:"stat",name:"damRaw"},scaling:[.5],max:50},{type:"raw_stat",bonuses:[{type:"prop",abil:25,name:"cooldown",value:-5}]}],id:45},{display_name:"Radiant Devotee",desc:"For every 4% Reflection you have from items, gain +1/5s Mana Regen (Max 10/5s)",archetype:"Battle Monk",archetype_req:1,parents:[47,45],dependencies:[],blockers:[],cost:1,display:{row:26,col:2,icon:"node_0"},properties:{},effects:[{type:"stat_scaling",inputs:[{type:"stat",name:"ref"}],output:{type:"stat",name:"mr"},scaling:[.25],max:10}],id:46},{display_name:"Whirlwind Strike",desc:"Uppercut will create a strong gust of air, launching you upward with enemies (Hold shift to stay grounded)",archetype:"Battle Monk",archetype_req:5,base_abil:8,parents:[38,46],dependencies:[8],blockers:[],cost:2,display:{row:26,col:4,icon:"node_1"},properties:{range:2},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Uppercut",multipliers:[0,0,0,0,0,50]}],id:47},{display_name:"Mythril Skin",desc:"Gain +5% Base Resistance and become immune to knockback",archetype:"Paladin",archetype_req:6,parents:[44],dependencies:[],blockers:[],cost:2,display:{row:26,col:7,icon:"node_1"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"stat",name:"baseResist",value:5}]}],id:48},{display_name:"Armour Breaker",desc:"While Corrupted, losing 30% Health will make your next Uppercut destroy enemies' defense, rendering them weaker to damage",archetype:"Fallen",archetype_req:0,base_abil:8,parents:[45,46],dependencies:[25],blockers:[],cost:2,display:{row:27,col:1,icon:"node_2"},properties:{duration:5},effects:[{type:"raw_stat",toggle:!0,bonuses:[{type:"stat",name:"damMult",value:30}]}],id:49},{display_name:"Shield Strike",desc:"When your Mantle of the Bovemist loses all charges, deal damage around you for each Mantle individually lost",archetype:"Paladin",archetype_req:0,base_abil:24,parents:[48,51],dependencies:[],blockers:[],cost:2,display:{row:27,col:6,icon:"node_1"},properties:{},effects:[{type:"replace_spell",name:"Shield Strike",base_spell:6,display:"Damage per Shield",parts:[{name:"Damage per Shield",multipliers:[60,0,20,0,0,0]}]}],id:50},{display_name:"Sparkling Hope",desc:"Everytime you heal 5% of your max health, deal damage to all nearby enemies",archetype:"Paladin",archetype_req:0,parents:[48],dependencies:[],blockers:[],cost:2,display:{row:27,col:8,icon:"node_2"},properties:{aoe:6},effects:[{type:"replace_spell",name:"Sparkling Hope",base_spell:6,display:"Damage Tick",parts:[{name:"Damage Tick",multipliers:[10,0,5,0,0,0]}]}],id:51},{display_name:"Massive Bash",desc:"While Corrupted, every 3% Health you lose will add +1 AoE to Bash (Max 10)",archetype:"Fallen",archetype_req:8,base_abil:0,parents:[53,45],dependencies:[],blockers:[],cost:2,display:{row:28,col:0,icon:"node_2"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Corrupted",output:{type:"prop",abil:0,name:"aoe"},scaling:[.3333333333333333],max:10}],id:52},{display_name:"Tempest",desc:"War Scream will ripple the ground and deal damage 3 times in a large area",archetype:"Battle Monk",archetype_req:0,base_abil:10,parents:[52,54],dependencies:[],blockers:[],cost:2,display:{row:28,col:2,icon:"node_1"},properties:{aoe:16},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Tempest",multipliers:[30,10,0,0,0,10]},{type:"add_spell_prop",base_spell:4,target_part:"Tempest Total Damage",hits:{Tempest:3}},{type:"add_spell_prop",base_spell:4,target_part:"Total Damage",hits:{Tempest:3}}],id:53},{display_name:"Spirit of the Rabbit",desc:"Reduce the Mana cost of Charge and increase your Walk Speed by +20%",archetype:"Battle Monk",archetype_req:5,base_abil:4,parents:[53,47],dependencies:[],blockers:[],cost:1,display:{row:28,col:4,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:2,cost:-5},{type:"raw_stat",bonuses:[{type:"stat",name:"spd",value:20}]}],id:54},{display_name:"Massacre",desc:"While Corrupted, if your effective attack speed is Slow or lower, hitting an enemy with your Main Attack will add +1% to your Corrupted bar",archetype:"Fallen",archetype_req:5,base_abil:999,parents:[53,52],dependencies:[],blockers:[],cost:2,display:{row:29,col:1,icon:"node_1"},properties:{},effects:[],id:55},{display_name:"Axe Kick",desc:"Increase the damage of Uppercut, but also increase its mana cost",base_abil:8,parents:[53,54],dependencies:[],blockers:[],cost:1,display:{row:29,col:3,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,target_part:"Uppercut",cost:10,multipliers:[100,0,0,0,0,0]}],id:56},{display_name:"Radiance",desc:"Bash will buff your allies' positive IDs. (15s Cooldown)",archetype:"Paladin",archetype_req:2,base_abil:0,parents:[54,58],dependencies:[],blockers:[],cost:2,display:{row:29,col:5,icon:"node_2"},properties:{cooldown:15},effects:[],id:57},{display_name:"Cheaper Bash 2",desc:"Reduce the Mana cost of Bash",base_abil:0,parents:[57,50,51],dependencies:[],blockers:[],cost:1,display:{row:29,col:7,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:1,cost:-5}],id:58},{display_name:"Cheaper War Scream",desc:"Reduce the Mana cost of War Scream",base_abil:10,parents:[52],dependencies:[],blockers:[],cost:1,display:{row:31,col:0,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:4,cost:-5}],id:59},{display_name:"Discombobulate",desc:"Every time you hit an enemy, briefly increase your elemental damage dealt to them by +2 (Additive, Max +50). This bonus decays -5 every second",archetype:"Battle Monk",archetype_req:11,parents:[62],dependencies:[],blockers:[],cost:2,display:{row:31,col:2,icon:"node_3"},properties:{},effects:[{type:"stat_scaling",slider:!0,slider_name:"Hits dealt",output:[{type:"stat",name:"eDamAddMin"},{type:"stat",name:"eDamAddMax"},{type:"stat",name:"tDamAddMin"},{type:"stat",name:"tDamAddMax"},{type:"stat",name:"wDamAddMin"},{type:"stat",name:"wDamAddMax"},{type:"stat",name:"fDamAddMin"},{type:"stat",name:"fDamAddMax"},{type:"stat",name:"aDamAddMin"},{type:"stat",name:"aDamAddMax"}],scaling:[2],max:50}],id:60},{display_name:"Thunderclap",desc:"Bash will cast at the player's position and gain additional AoE.\n\n All elemental conversions become Thunder",archetype:"Battle Monk",archetype_req:8,parents:[62],dependencies:[],blockers:[],cost:2,display:{row:32,col:5,icon:"node_1"},properties:{},effects:[{type:"convert_spell_conv",target_part:"all",conversion:"Thunder"},{type:"raw_stat",bonuses:[{type:"prop",abil:0,name:"aoe",value:3}]}],id:61},{display_name:"Cyclone",desc:"After casting War Scream, envelop yourself with a vortex that damages nearby enemies every 0.5s",archetype:"Battle Monk",archetype_req:0,parents:[54],dependencies:[],blockers:[],cost:1,display:{row:31,col:4,icon:"node_1"},properties:{aoe:4,duration:20},effects:[{type:"add_spell_prop",base_spell:4,target_part:"Cyclone",multipliers:[10,0,0,0,5,10]},{type:"add_spell_prop",base_spell:4,target_part:"Cyclone Total Damage",hits:{Cyclone:40}}],id:62},{display_name:"Second Chance",desc:"When you receive a fatal blow, survive and regain 30% of your Health (10m Cooldown)",archetype:"Paladin",archetype_req:12,parents:[58],dependencies:[],blockers:[],cost:2,display:{row:32,col:7,icon:"node_3"},properties:{},effects:[],id:63},{display_name:"Blood Pact",desc:"If you do not have enough mana to cast a spell, spend health instead (0.6% health per mana)",archetype:"",archetype_req:10,parents:[59],dependencies:[],blockers:[],cost:2,display:{row:34,col:1,icon:"node_3"},properties:{health_cost:.6},effects:[],id:64},{display_name:"Haemorrhage",desc:"Reduce Blood Pact's health cost. (0.3% health per mana)",archetype:"Fallen",archetype_req:0,base_abil:64,parents:[64],dependencies:[64],blockers:[],cost:1,display:{row:35,col:2,icon:"node_1"},properties:{},effects:[{type:"raw_stat",bonuses:[{type:"prop",abil:64,name:"health_cost",value:-0.3}]}],id:65},{display_name:"Brink of Madness",desc:"If your health is 25% full or less, gain +40% Resistance",parents:[64,67],dependencies:[],blockers:[],cost:2,display:{row:35,col:4,icon:"node_2"},properties:{},effects:[],id:66},{display_name:"Cheaper Uppercut 2",desc:"Reduce the Mana cost of Uppercut",base_abil:8,parents:[63,66],dependencies:[],blockers:[],cost:1,display:{row:35,col:6,icon:"node_0"},properties:{},effects:[{type:"add_spell_prop",base_spell:3,cost:-5}],id:67},{display_name:"Martyr",desc:"When you receive a fatal blow, all nearby allies become invincible",archetype:"Paladin",archetype_req:0,parents:[63],dependencies:[],blockers:[],cost:2,display:{row:35,col:8,icon:"node_1"},properties:{duration:3,aoe:12},effects:[],id:68}]} diff --git a/js/damage_calc.js b/js/damage_calc.js index aae9737..7b1945f 100644 --- a/js/damage_calc.js +++ b/js/damage_calc.js @@ -180,9 +180,8 @@ function calculateSpellDamage(stats, weapon, conversions, use_spell_damage, igno Spell schema: spell: { - name: str internal string name for the spell. Unique identifier + name: str internal string name for the spell. Unique identifier, also display cost: Optional[int] ignored for spells that are not id 1-4 - display_text: str short description of the spell, ex. Bash, Meteor, Arrow Shield base_spell: int spell index. 0-4 are reserved (0 is melee, 1-4 is common 4 spells) spell_type: str [TODO: DEPRECATED/REMOVE] "healing" or "damage" scaling: Optional[str] [DEFAULT: "spell"] "melee" or "spell" @@ -242,14 +241,12 @@ const default_spells = { wand: [{ type: "replace_spell", // not needed but makes this usable as an "abil part" name: "Wand Melee", // TODO: name for melee attacks? - display_text: "Mage basic attack", base_spell: 0, scaling: "melee", use_atkspd: false, display: "Melee", parts: [{ name: "Melee", multipliers: [100, 0, 0, 0, 0, 0] }] }, { name: "Heal", // TODO: name for melee attacks? // JUST FOR TESTING... - display_text: "Heal spell!", base_spell: 1, display: "Total Heal", parts: [ @@ -261,7 +258,6 @@ const default_spells = { spear: [{ type: "replace_spell", // not needed but makes this usable as an "abil part" name: "Melee", // TODO: name for melee attacks? - display_text: "Warrior basic attack", base_spell: 0, scaling: "melee", use_atkspd: false, display: "Melee", @@ -270,16 +266,14 @@ const default_spells = { bow: [{ type: "replace_spell", // not needed but makes this usable as an "abil part" name: "Bow Shot", // TODO: name for melee attacks? - display_text: "Archer basic attack", base_spell: 0, scaling: "melee", use_atkspd: false, - display: "Melee", - parts: [{ name: "Melee", multipliers: [100, 0, 0, 0, 0, 0] }] + display: "Single Shot", + parts: [{ name: "Single Shot", multipliers: [100, 0, 0, 0, 0, 0] }] }], dagger: [{ type: "replace_spell", // not needed but makes this usable as an "abil part" name: "Melee", // TODO: name for melee attacks? - display_text: "Assassin basic attack", base_spell: 0, scaling: "melee", use_atkspd: false, display: "Melee", @@ -288,7 +282,6 @@ const default_spells = { relik: [{ type: "replace_spell", // not needed but makes this usable as an "abil part" name: "Relik Melee", // TODO: name for melee attacks? - display_text: "Shaman basic attack", base_spell: 0, spell_type: "damage", scaling: "melee", use_atkspd: false, diff --git a/js/display.js b/js/display.js index 19c252a..1d4865e 100644 --- a/js/display.js +++ b/js/display.js @@ -1664,7 +1664,7 @@ function displaySpellDamage(parent_elem, overallparent_elem, stats, spell, spell if (spell_info.name === spell.display) { - _summary(spell_info.name+ " Average: ", averageDamage, "Damage"); + _summary(spell_info.name+ ": ", averageDamage, "Damage"); } function _damage_display(label_text, average, dmg_min, dmg_max) {