Merge branch 'atree' into spell_reformat
|
@ -1,137 +0,0 @@
|
||||||
{
|
|
||||||
"Arrow Shield": 0,
|
|
||||||
"Escape": 1,
|
|
||||||
"Arrow Bomb": 2,
|
|
||||||
"Heart Shatter": 3,
|
|
||||||
"Fire Creep": 4,
|
|
||||||
"Bryophyte Roots": 5,
|
|
||||||
"Nimble String": 6,
|
|
||||||
"Arrow Storm": 7,
|
|
||||||
"Guardian Angels": 8,
|
|
||||||
"Windy Feet": 9,
|
|
||||||
"Basaltic Trap": 10,
|
|
||||||
"Windstorm": 11,
|
|
||||||
"Grappling Hook": 12,
|
|
||||||
"Implosion": 13,
|
|
||||||
"Twain's Arc": 14,
|
|
||||||
"Fierce Stomp": 15,
|
|
||||||
"Scorched Earth": 16,
|
|
||||||
"Leap": 17,
|
|
||||||
"Shocking Bomb": 18,
|
|
||||||
"Mana Trap": 19,
|
|
||||||
"Escape Artist": 20,
|
|
||||||
"Initiator": 21,
|
|
||||||
"Call of the Hound": 22,
|
|
||||||
"Arrow Hurricane": 23,
|
|
||||||
"Geyser Stomp": 24,
|
|
||||||
"Crepuscular Ray": 25,
|
|
||||||
"Grape Bomb": 26,
|
|
||||||
"Tangled Traps": 27,
|
|
||||||
"Snow Storm": 28,
|
|
||||||
"All-Seeing Panoptes": 29,
|
|
||||||
"Minefield": 30,
|
|
||||||
"Bow Proficiency I": 31,
|
|
||||||
"Cheaper Arrow Bomb": 32,
|
|
||||||
"Cheaper Arrow Storm": 33,
|
|
||||||
"Cheaper Escape": 34,
|
|
||||||
"Earth Mastery": 82,
|
|
||||||
"Thunder Mastery": 83,
|
|
||||||
"Water Mastery": 84,
|
|
||||||
"Air Mastery": 85,
|
|
||||||
"Fire Mastery": 86,
|
|
||||||
"More Shields": 40,
|
|
||||||
"Stormy Feet": 41,
|
|
||||||
"Refined Gunpowder": 42,
|
|
||||||
"More Traps": 43,
|
|
||||||
"Better Arrow Shield": 44,
|
|
||||||
"Better Leap": 45,
|
|
||||||
"Better Guardian Angels": 46,
|
|
||||||
"Cheaper Arrow Storm (2)": 47,
|
|
||||||
"Precise Shot": 48,
|
|
||||||
"Cheaper Arrow Shield": 49,
|
|
||||||
"Rocket Jump": 50,
|
|
||||||
"Cheaper Escape (2)": 51,
|
|
||||||
"Stronger Hook": 52,
|
|
||||||
"Cheaper Arrow Bomb (2)": 53,
|
|
||||||
"Bouncing Bomb": 54,
|
|
||||||
"Homing Shots": 55,
|
|
||||||
"Shrapnel Bomb": 56,
|
|
||||||
"Elusive": 57,
|
|
||||||
"Double Shots": 58,
|
|
||||||
"Triple Shots": 59,
|
|
||||||
"Power Shots": 60,
|
|
||||||
"Focus": 61,
|
|
||||||
"More Focus": 62,
|
|
||||||
"More Focus (2)": 63,
|
|
||||||
"Traveler": 64,
|
|
||||||
"Patient Hunter": 65,
|
|
||||||
"Stronger Patient Hunter": 66,
|
|
||||||
"Frenzy": 67,
|
|
||||||
"Phantom Ray": 68,
|
|
||||||
"Arrow Rain": 69,
|
|
||||||
"Decimator": 70,
|
|
||||||
"Bash": 71,
|
|
||||||
"Spear Proficiency 1": 72,
|
|
||||||
"Cheaper Bash": 73,
|
|
||||||
"Double Bash": 74,
|
|
||||||
"Charge": 75,
|
|
||||||
"Heavy Impact": 76,
|
|
||||||
"Vehement": 77,
|
|
||||||
"Tougher Skin": 78,
|
|
||||||
"Uppercut": 79,
|
|
||||||
"Cheaper Charge": 80,
|
|
||||||
"War Scream": 81,
|
|
||||||
"Quadruple Bash": 87,
|
|
||||||
"Fireworks": 88,
|
|
||||||
"Half-Moon Swipe": 89,
|
|
||||||
"Flyby Jab": 90,
|
|
||||||
"Flaming Uppercut": 91,
|
|
||||||
"Iron Lungs": 92,
|
|
||||||
"Generalist": 93,
|
|
||||||
"Counter": 94,
|
|
||||||
"Mantle of the Bovemists": 95,
|
|
||||||
"Bak'al's Grasp": 96,
|
|
||||||
"Spear Proficiency 2": 97,
|
|
||||||
"Cheaper Uppercut": 98,
|
|
||||||
"Aerodynamics": 99,
|
|
||||||
"Provoke": 100,
|
|
||||||
"Precise Strikes": 101,
|
|
||||||
"Air Shout": 102,
|
|
||||||
"Enraged Blow": 103,
|
|
||||||
"Flying Kick": 104,
|
|
||||||
"Stronger Mantle": 105,
|
|
||||||
"Manachism": 106,
|
|
||||||
"Boiling Blood": 107,
|
|
||||||
"Ragnarokkr": 108,
|
|
||||||
"Ambidextrous": 109,
|
|
||||||
"Burning Heart": 110,
|
|
||||||
"Stronger Bash": 111,
|
|
||||||
"Intoxicating Blood": 112,
|
|
||||||
"Comet": 113,
|
|
||||||
"Collide": 114,
|
|
||||||
"Rejuvenating Skin": 115,
|
|
||||||
"Uncontainable Corruption": 116,
|
|
||||||
"Radiant Devotee": 117,
|
|
||||||
"Whirlwind Strike": 118,
|
|
||||||
"Mythril Skin": 119,
|
|
||||||
"Armour Breaker": 120,
|
|
||||||
"Shield Strike": 121,
|
|
||||||
"Sparkling Hope": 122,
|
|
||||||
"Massive Bash": 123,
|
|
||||||
"Tempest": 124,
|
|
||||||
"Spirit of the Rabbit": 125,
|
|
||||||
"Massacre": 126,
|
|
||||||
"Axe Kick": 127,
|
|
||||||
"Radiance": 128,
|
|
||||||
"Cheaper Bash 2": 129,
|
|
||||||
"Cheaper War Scream": 130,
|
|
||||||
"Discombobulate": 131,
|
|
||||||
"Thunderclap": 132,
|
|
||||||
"Cyclone": 133,
|
|
||||||
"Second Chance": 134,
|
|
||||||
"Blood Pact": 135,
|
|
||||||
"Haemorrhage": 136,
|
|
||||||
"Brink of Madness": 137,
|
|
||||||
"Cheaper Uppercut 2": 138,
|
|
||||||
"Martyr": 139
|
|
||||||
}
|
|
31
js/atree.js
|
@ -61,7 +61,7 @@ const atree_render = new (class extends ComputeNode {
|
||||||
}
|
}
|
||||||
|
|
||||||
//for some reason we have to cast to string
|
//for some reason we have to cast to string
|
||||||
if (atree) { render_AT(document.getElementById("atree-ui"), atree); }
|
if (atree) { render_AT(document.getElementById("atree-ui"), document.getElementById("atree-active"), atree); }
|
||||||
|
|
||||||
if (document.getElementById("toggle-atree").classList.contains("toggleOn")) {
|
if (document.getElementById("toggle-atree").classList.contains("toggleOn")) {
|
||||||
toggle_tab('atree-dropdown');
|
toggle_tab('atree-dropdown');
|
||||||
|
@ -101,10 +101,17 @@ function topological_sort_tree(tree, res, mark_state) {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
function render_AT(elem, tree) {
|
|
||||||
|
/** The main function for rendering an ability tree.
|
||||||
|
*
|
||||||
|
* @param {Element} UI_elem - the DOM element to draw the atree within.
|
||||||
|
* @param {Element} list_elem - the DOM element to list selected abilities within.
|
||||||
|
* @param {*} tree - the ability tree to work with.
|
||||||
|
*/
|
||||||
|
function render_AT(UI_elem, list_elem, tree) {
|
||||||
console.log("constructing ability tree UI");
|
console.log("constructing ability tree UI");
|
||||||
document.getElementById("atree-active").innerHTML = ""; //reset all atree actives - should be done in a more general way later
|
list_elem.innerHTML = ""; //reset all atree actives - should be done in a more general way later
|
||||||
elem.innerHTML = ""; //reset the atree in the DOM
|
UI_elem.innerHTML = ""; //reset the atree in the DOM
|
||||||
|
|
||||||
// add in the "Active" title to atree
|
// add in the "Active" title to atree
|
||||||
let active_row = document.createElement("div");
|
let active_row = document.createElement("div");
|
||||||
|
@ -144,7 +151,7 @@ function render_AT(elem, tree) {
|
||||||
|
|
||||||
active_row.appendChild(active_word);
|
active_row.appendChild(active_word);
|
||||||
active_row.appendChild(active_AP_container);
|
active_row.appendChild(active_AP_container);
|
||||||
document.getElementById("atree-active").appendChild(active_row);
|
list_elem.appendChild(active_row);
|
||||||
|
|
||||||
let atree_map = new Map();
|
let atree_map = new Map();
|
||||||
let atree_connectors_map = new Map()
|
let atree_connectors_map = new Map()
|
||||||
|
@ -173,18 +180,17 @@ function render_AT(elem, tree) {
|
||||||
let row = document.createElement('div');
|
let row = document.createElement('div');
|
||||||
row.classList.add("row");
|
row.classList.add("row");
|
||||||
row.id = "atree-row-" + j;
|
row.id = "atree-row-" + j;
|
||||||
//was causing atree rows to be 0 height
|
|
||||||
// TODO: do this more dynamically
|
// TODO: do this more dynamically
|
||||||
row.style.minHeight = elem.scrollWidth / 9 + "px";
|
row.style.minHeight = UI_elem.scrollWidth / 9 + "px";
|
||||||
//row.style.minHeight = elem.getBoundingClientRect().width / 9 + "px";
|
//row.style.minHeight = UI_elem.getBoundingClientRect().width / 9 + "px";
|
||||||
|
|
||||||
for (let k = 0; k < 9; k++) {
|
for (let k = 0; k < 9; k++) {
|
||||||
col = document.createElement('div');
|
col = document.createElement('div');
|
||||||
col.classList.add('col', 'px-0');
|
col.classList.add('col', 'px-0');
|
||||||
col.style.minHeight = elem.scrollWidth / 9 + "px";
|
col.style.minHeight = UI_elem.scrollWidth / 9 + "px";
|
||||||
row.appendChild(col);
|
row.appendChild(col);
|
||||||
}
|
}
|
||||||
elem.appendChild(row);
|
UI_elem.appendChild(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const _node of tree) {
|
for (const _node of tree) {
|
||||||
|
@ -258,8 +264,7 @@ function render_AT(elem, tree) {
|
||||||
|
|
||||||
let active_tooltip = document.createElement('div');
|
let active_tooltip = document.createElement('div');
|
||||||
active_tooltip.classList.add("rounded-bottom", "dark-4", "border", "p-0", "mx-2", "my-4", "dark-shadow");
|
active_tooltip.classList.add("rounded-bottom", "dark-4", "border", "p-0", "mx-2", "my-4", "dark-shadow");
|
||||||
//was causing active element boxes to be 0 width
|
active_tooltip.style.maxWidth = UI_elem.getBoundingClientRect().width * .80 + "px";
|
||||||
active_tooltip.style.maxWidth = elem.getBoundingClientRect().width * .80 + "px";
|
|
||||||
active_tooltip.style.display = "none";
|
active_tooltip.style.display = "none";
|
||||||
|
|
||||||
// tooltip text formatting
|
// tooltip text formatting
|
||||||
|
@ -288,7 +293,7 @@ function render_AT(elem, tree) {
|
||||||
node_tooltip.style.zIndex = "100";
|
node_tooltip.style.zIndex = "100";
|
||||||
|
|
||||||
node_elem.appendChild(node_tooltip);
|
node_elem.appendChild(node_tooltip);
|
||||||
document.getElementById("atree-active").appendChild(active_tooltip);
|
list_elem.appendChild(active_tooltip);
|
||||||
|
|
||||||
node_elem.addEventListener('click', function(e) {
|
node_elem.addEventListener('click', function(e) {
|
||||||
if (e.target !== this && e.target!== this.children[0]) {return;}
|
if (e.target !== this && e.target!== this.children[0]) {return;}
|
||||||
|
|
|
@ -1,171 +0,0 @@
|
||||||
const atrees_old = {
|
|
||||||
"Assassin": [
|
|
||||||
{"title": "Spin Attack", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 0, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 1, "col": 4},
|
|
||||||
{"title": "Dagger Proficiency I", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 2, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 2, "col": 3},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 2, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 3, "col": 4},
|
|
||||||
{"title": "Double Spin", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 4, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 5, "col": 4},
|
|
||||||
{"title": "Dash", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 6, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 6, "col": 3},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 6, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 6, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 6, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 7, "col": 2},
|
|
||||||
{"title": "Smoke Bomb", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 8, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 7, "col": 6},
|
|
||||||
{"title": "Multihit", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 8, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 8, "col": 3},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 8, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 8, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 8, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 8, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 9, "col": 0},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 10, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 9, "col": 2},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 10, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 9, "col": 6},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 10, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 8, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 8, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 9, "col": 8},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 10, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 10, "col": 1},
|
|
||||||
{"title": "Backstab", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 11, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 9, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 90, "row": 10, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 10, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 11, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 10, "col": 7},
|
|
||||||
{"title": "Fatality", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 11, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 11, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 12, "col": 0},
|
|
||||||
{"title": "Violent Vortex", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 13, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 11, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 12, "col": 2},
|
|
||||||
{"title": "Vanish", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 13, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 12, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 13, "col": 3},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 13, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 13, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 14, "col": 2},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 15, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 14, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 15, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 12, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 13, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 14, "col": 7},
|
|
||||||
{"title": "Lacerate", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 15, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 15, "col": 1},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 16, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 15, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 16, "col": 5},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 15, "col": 8},
|
|
||||||
{"title": "Wall of Smoke", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 16, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 16, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 17, "col": 0},
|
|
||||||
{"title": "Silent Killer", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 18, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 16, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 17, "col": 2},
|
|
||||||
{"title": "Shadow Travel", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 18, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 17, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 18, "col": 5},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 17, "col": 8},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 18, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 18, "col": 4},
|
|
||||||
{"title": "Exploding Clones", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 19, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 18, "col": 3},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 19, "col": 0},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 20, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 19, "col": 3},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 20, "col": 3},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 18, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 18, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 19, "col": 7},
|
|
||||||
{"title": "Weightless", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 20, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 20, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 20, "col": 2},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 21, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 20, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 21, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 20, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 21, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 21, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 20, "col": 8},
|
|
||||||
{"title": "Dancing Blade", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 21, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 21, "col": 0},
|
|
||||||
{"title": "Spin Attack Damage", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 22, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 21, "col": 3},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 22, "col": 3},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 22, "col": 1},
|
|
||||||
{"title": "Marked", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 23, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 22, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 23, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 23, "col": 5},
|
|
||||||
{"title": "Shurikens", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 23, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 23, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 22, "col": 8},
|
|
||||||
{"title": "Far Reach", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 23, "col": 8},
|
|
||||||
{"title": "Stronger Multihit", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 24, "col": 5},
|
|
||||||
{"title": "Psithurism", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 24, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 24, "col": 1},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 25, "col": 1},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 25, "col": 3},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 24, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 25, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 25, "col": 5},
|
|
||||||
{"title": "Choke Bomb", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 25, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 25, "col": 7},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 25, "col": 8},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 26, "col": 5},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 25, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 26, "col": 0},
|
|
||||||
{"title": "Death Magnet", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 27, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 25, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 26, "col": 2},
|
|
||||||
{"title": "Cheaper Multihit", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 27, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 26, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 27, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 26, "col": 7},
|
|
||||||
{"title": "Parry", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 27, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 27, "col": 1},
|
|
||||||
{"title": "Fatal Spin", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 28, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 27, "col": 3},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 28, "col": 3},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 27, "col": 6},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 28, "col": 6},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 27, "col": 8},
|
|
||||||
{"title": "Wall Jump", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 28, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 28, "col": 0},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 29, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 29, "col": 1},
|
|
||||||
{"title": "Harvester", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 30, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 28, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 29, "col": 4},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 30, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 28, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 29, "col": 7},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 30, "col": 7 },
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 30, "col": 2},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 31, "col": 2 },
|
|
||||||
{"image": "../media/atree/connect_t.png", "connector": true, "rotate": 180, "row": 30, "col": 5},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 90, "row": 30, "col": 6},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 31, "col": 5},
|
|
||||||
{"title": "Ricochet", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 31, "col": 8},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 31, "col": 1},
|
|
||||||
{"title": "Satsujin", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 32, "col": 1},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 31, "col": 4},
|
|
||||||
{"title": "Forbidden Art", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 32, "col": 4},
|
|
||||||
{"image": "../media/atree/connect_line.png", "connector": true, "rotate": 0, "row": 31, "col": 7},
|
|
||||||
{"title": "Jasmine Bloom", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 32, "col": 7},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 180, "row": 32, "col": 0},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 33, "col": 0},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 32, "col": 2},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 33, "col": 2},
|
|
||||||
{"image": "../media/atree/connect_angle.png", "connector": true, "rotate": 270, "row": 32, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 33, "col": 5},
|
|
||||||
{"title": "Text", "desc": "desc", "image": "../media/atree/node.png", "connector": false, "row": 33, "col": 8},
|
|
||||||
]
|
|
||||||
}
|
|
146
js/atree_ids.json
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
{
|
||||||
|
"Archer": {
|
||||||
|
"Arrow Shield": 0,
|
||||||
|
"Escape": 1,
|
||||||
|
"Arrow Bomb": 2,
|
||||||
|
"Heart Shatter": 3,
|
||||||
|
"Fire Creep": 4,
|
||||||
|
"Bryophyte Roots": 5,
|
||||||
|
"Nimble String": 6,
|
||||||
|
"Arrow Storm": 7,
|
||||||
|
"Guardian Angels": 8,
|
||||||
|
"Windy Feet": 9,
|
||||||
|
"Basaltic Trap": 10,
|
||||||
|
"Windstorm": 11,
|
||||||
|
"Grappling Hook": 12,
|
||||||
|
"Implosion": 13,
|
||||||
|
"Twain's Arc": 14,
|
||||||
|
"Fierce Stomp": 15,
|
||||||
|
"Scorched Earth": 16,
|
||||||
|
"Leap": 17,
|
||||||
|
"Shocking Bomb": 18,
|
||||||
|
"Mana Trap": 19,
|
||||||
|
"Escape Artist": 20,
|
||||||
|
"Initiator": 21,
|
||||||
|
"Call of the Hound": 22,
|
||||||
|
"Arrow Hurricane": 23,
|
||||||
|
"Geyser Stomp": 24,
|
||||||
|
"Crepuscular Ray": 25,
|
||||||
|
"Grape Bomb": 26,
|
||||||
|
"Tangled Traps": 27,
|
||||||
|
"Snow Storm": 28,
|
||||||
|
"All-Seeing Panoptes": 29,
|
||||||
|
"Minefield": 30,
|
||||||
|
"Bow Proficiency I": 31,
|
||||||
|
"Cheaper Arrow Bomb": 32,
|
||||||
|
"Cheaper Arrow Storm": 33,
|
||||||
|
"Cheaper Escape": 34,
|
||||||
|
"Earth Mastery": 35,
|
||||||
|
"Thunder Mastery": 36,
|
||||||
|
"Water Mastery": 37,
|
||||||
|
"Air Mastery": 38,
|
||||||
|
"Fire Mastery": 39,
|
||||||
|
"More Shields": 40,
|
||||||
|
"Stormy Feet": 41,
|
||||||
|
"Refined Gunpowder": 42,
|
||||||
|
"More Traps": 43,
|
||||||
|
"Better Arrow Shield": 44,
|
||||||
|
"Better Leap": 45,
|
||||||
|
"Better Guardian Angels": 46,
|
||||||
|
"Cheaper Arrow Storm (2)": 47,
|
||||||
|
"Precise Shot": 48,
|
||||||
|
"Cheaper Arrow Shield": 49,
|
||||||
|
"Rocket Jump": 50,
|
||||||
|
"Cheaper Escape (2)": 51,
|
||||||
|
"Stronger Hook": 52,
|
||||||
|
"Cheaper Arrow Bomb (2)": 53,
|
||||||
|
"Bouncing Bomb": 54,
|
||||||
|
"Homing Shots": 55,
|
||||||
|
"Shrapnel Bomb": 56,
|
||||||
|
"Elusive": 57,
|
||||||
|
"Double Shots": 58,
|
||||||
|
"Triple Shots": 59,
|
||||||
|
"Power Shots": 60,
|
||||||
|
"Focus": 61,
|
||||||
|
"More Focus": 62,
|
||||||
|
"More Focus (2)": 63,
|
||||||
|
"Traveler": 64,
|
||||||
|
"Patient Hunter": 65,
|
||||||
|
"Stronger Patient Hunter": 66,
|
||||||
|
"Frenzy": 67,
|
||||||
|
"Phantom Ray": 68,
|
||||||
|
"Arrow Rain": 69,
|
||||||
|
"Decimator": 70
|
||||||
|
},
|
||||||
|
"Warrior": {
|
||||||
|
"Bash": 0,
|
||||||
|
"Spear Proficiency 1": 1,
|
||||||
|
"Cheaper Bash": 2,
|
||||||
|
"Double Bash": 3,
|
||||||
|
"Charge": 4,
|
||||||
|
"Heavy Impact": 5,
|
||||||
|
"Vehement": 6,
|
||||||
|
"Tougher Skin": 7,
|
||||||
|
"Uppercut": 8,
|
||||||
|
"Cheaper Charge": 9,
|
||||||
|
"War Scream": 10,
|
||||||
|
"Earth Mastery": 11,
|
||||||
|
"Thunder Mastery": 12,
|
||||||
|
"Water Mastery": 13,
|
||||||
|
"Air Mastery": 14,
|
||||||
|
"Fire Mastery": 15,
|
||||||
|
"Quadruple Bash": 16,
|
||||||
|
"Fireworks": 17,
|
||||||
|
"Half-Moon Swipe": 18,
|
||||||
|
"Flyby Jab": 19,
|
||||||
|
"Flaming Uppercut": 20,
|
||||||
|
"Iron Lungs": 21,
|
||||||
|
"Generalist": 22,
|
||||||
|
"Counter": 23,
|
||||||
|
"Mantle of the Bovemists": 24,
|
||||||
|
"Bak'al's Grasp": 25,
|
||||||
|
"Spear Proficiency 2": 26,
|
||||||
|
"Cheaper Uppercut": 27,
|
||||||
|
"Aerodynamics": 28,
|
||||||
|
"Provoke": 29,
|
||||||
|
"Precise Strikes": 30,
|
||||||
|
"Air Shout": 31,
|
||||||
|
"Enraged Blow": 32,
|
||||||
|
"Flying Kick": 33,
|
||||||
|
"Stronger Mantle": 34,
|
||||||
|
"Manachism": 35,
|
||||||
|
"Boiling Blood": 36,
|
||||||
|
"Ragnarokkr": 37,
|
||||||
|
"Ambidextrous": 38,
|
||||||
|
"Burning Heart": 39,
|
||||||
|
"Stronger Bash": 40,
|
||||||
|
"Intoxicating Blood": 41,
|
||||||
|
"Comet": 42,
|
||||||
|
"Collide": 43,
|
||||||
|
"Rejuvenating Skin": 44,
|
||||||
|
"Uncontainable Corruption": 45,
|
||||||
|
"Radiant Devotee": 46,
|
||||||
|
"Whirlwind Strike": 47,
|
||||||
|
"Mythril Skin": 48,
|
||||||
|
"Armour Breaker": 49,
|
||||||
|
"Shield Strike": 50,
|
||||||
|
"Sparkling Hope": 51,
|
||||||
|
"Massive Bash": 52,
|
||||||
|
"Tempest": 53,
|
||||||
|
"Spirit of the Rabbit": 54,
|
||||||
|
"Massacre": 55,
|
||||||
|
"Axe Kick": 56,
|
||||||
|
"Radiance": 57,
|
||||||
|
"Cheaper Bash 2": 58,
|
||||||
|
"Cheaper War Scream": 59,
|
||||||
|
"Discombobulate": 60,
|
||||||
|
"Thunderclap": 61,
|
||||||
|
"Cyclone": 62,
|
||||||
|
"Second Chance": 63,
|
||||||
|
"Blood Pact": 64,
|
||||||
|
"Haemorrhage": 65,
|
||||||
|
"Brink of Madness": 66,
|
||||||
|
"Cheaper Uppercut 2": 67,
|
||||||
|
"Martyr": 68
|
||||||
|
}
|
||||||
|
}
|
29
py_script/atree-convertID.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
"""
|
||||||
|
Generate a JSON Ability Tree [atree_constants_idfied.json] with:
|
||||||
|
- All references replaced by numerical IDs
|
||||||
|
given a JSON Ability Tree with reference as string AND a JSON Ability Names to IDs.
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
|
||||||
|
# Ability names to IDs data
|
||||||
|
with open("atree_ids.json") as f:
|
||||||
|
id_data = json.loads(f.read())
|
||||||
|
|
||||||
|
# Ability tree data with reference as string
|
||||||
|
with open("atree_constants.json") as f:
|
||||||
|
atree_data = json.loads(f.read())
|
||||||
|
|
||||||
|
for _class, info in atree_data.items():
|
||||||
|
for abil in range(len(info)):
|
||||||
|
info[abil]["id"] = id_data[_class][info[abil]["display_name"]]
|
||||||
|
for ref in range(len(info[abil]["parents"])):
|
||||||
|
info[abil]["parents"][ref] = id_data[_class][info[abil]["parents"][ref]]
|
||||||
|
|
||||||
|
for ref in range(len(info[abil]["dependencies"])):
|
||||||
|
info[abil]["dependencies"][ref] = id_data[_class][info[abil]["dependencies"][ref]]
|
||||||
|
|
||||||
|
for ref in range(len(info[abil]["blockers"])):
|
||||||
|
info[abil]["blockers"][ref] = id_data[_class][info[abil]["blockers"][ref]]
|
||||||
|
|
||||||
|
with open('atree_constants_idfied.json', 'w', encoding='utf-8') as abil_dest:
|
||||||
|
json.dump(atree_data, abil_dest, ensure_ascii=False, indent=4)
|
|
@ -1,35 +1,35 @@
|
||||||
"""
|
"""
|
||||||
Generate a JSON Ability Tree with:
|
Generate a JSON Ability Tree [atree_constants_id.json] with:
|
||||||
- All references replaced by numerical IDs
|
- All references replaced by numerical IDs
|
||||||
- Extra JSON File with Original name as key and Assigned IDs as value.
|
- Extra JSON File with Class: [Original name as key and Assigned IDs as value].
|
||||||
given a JSON Ability Tree.
|
given a JSON Ability Tree with reference as string.
|
||||||
"""
|
"""
|
||||||
import json
|
import json
|
||||||
|
|
||||||
id = 0
|
|
||||||
abilDict = {}
|
abilDict = {}
|
||||||
with open("atree-parse.json") as f:
|
with open("atree_constants.json") as f:
|
||||||
data = json.loads(f.read())
|
data = json.loads(f.read())
|
||||||
for classType, info in data.items():
|
for classType, info in data.items():
|
||||||
|
_id = 0
|
||||||
|
abilDict[classType] = {}
|
||||||
for abil in info:
|
for abil in info:
|
||||||
abilDict[abil["display_name"]] = id
|
abilDict[classType][abil["display_name"]] = _id
|
||||||
id += 1
|
_id += 1
|
||||||
|
|
||||||
with open("atree-ids.json", "w", encoding='utf-8') as id_dest:
|
with open("atree_ids.json", "w", encoding='utf-8') as id_dest:
|
||||||
json.dump(abilDict, id_dest, ensure_ascii=False, indent=4)
|
json.dump(abilDict, id_dest, ensure_ascii=False, indent=4)
|
||||||
|
|
||||||
for classType, info in data.items():
|
for classType, info in data.items():
|
||||||
for abil in range(len(info)):
|
for abil in range(len(info)):
|
||||||
info[abil]["id"] = abilDict[info[abil]["display_name"]]
|
info[abil]["id"] = abilDict[classType][info[abil]["display_name"]]
|
||||||
for ref in range(len(info[abil]["parents"])):
|
for ref in range(len(info[abil]["parents"])):
|
||||||
info[abil]["parents"][ref] = abilDict[info[abil]["parents"][ref]]
|
info[abil]["parents"][ref] = abilDict[classType][info[abil]["parents"][ref]]
|
||||||
|
|
||||||
for ref in range(len(info[abil]["dependencies"])):
|
for ref in range(len(info[abil]["dependencies"])):
|
||||||
info[abil]["dependencies"][ref] = abilDict[info[abil]["dependencies"][ref]]
|
info[abil]["dependencies"][ref] = abilDict[classType][info[abil]["dependencies"][ref]]
|
||||||
|
|
||||||
for ref in range(len(info[abil]["blockers"])):
|
for ref in range(len(info[abil]["blockers"])):
|
||||||
info[abil]["blockers"][ref] = abilDict[info[abil]["blockers"][ref]]
|
info[abil]["blockers"][ref] = abilDict[classType][info[abil]["blockers"][ref]]
|
||||||
data[classType] = info
|
|
||||||
|
|
||||||
with open('atree-constants-id.json', 'w', encoding='utf-8') as abil_dest:
|
with open('atree_constants_id.json', 'w', encoding='utf-8') as abil_dest:
|
||||||
json.dump(data, abil_dest, ensure_ascii=False, indent=4)
|
json.dump(data, abil_dest, ensure_ascii=False, indent=4)
|
||||||
|
|
146
py_script/atree-ids.json
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
{
|
||||||
|
"Archer": {
|
||||||
|
"Arrow Shield": 1,
|
||||||
|
"Escape": 2,
|
||||||
|
"Arrow Bomb": 3,
|
||||||
|
"Heart Shatter": 4,
|
||||||
|
"Fire Creep": 5,
|
||||||
|
"Bryophyte Roots": 6,
|
||||||
|
"Nimble String": 7,
|
||||||
|
"Arrow Storm": 8,
|
||||||
|
"Guardian Angels": 9,
|
||||||
|
"Windy Feet": 10,
|
||||||
|
"Basaltic Trap": 11,
|
||||||
|
"Windstorm": 12,
|
||||||
|
"Grappling Hook": 13,
|
||||||
|
"Implosion": 14,
|
||||||
|
"Twain's Arc": 15,
|
||||||
|
"Fierce Stomp": 16,
|
||||||
|
"Scorched Earth": 17,
|
||||||
|
"Leap": 18,
|
||||||
|
"Shocking Bomb": 19,
|
||||||
|
"Mana Trap": 20,
|
||||||
|
"Escape Artist": 21,
|
||||||
|
"Initiator": 22,
|
||||||
|
"Call of the Hound": 23,
|
||||||
|
"Arrow Hurricane": 24,
|
||||||
|
"Geyser Stomp": 25,
|
||||||
|
"Crepuscular Ray": 26,
|
||||||
|
"Grape Bomb": 27,
|
||||||
|
"Tangled Traps": 28,
|
||||||
|
"Snow Storm": 29,
|
||||||
|
"All-Seeing Panoptes": 30,
|
||||||
|
"Minefield": 31,
|
||||||
|
"Bow Proficiency I": 32,
|
||||||
|
"Cheaper Arrow Bomb": 33,
|
||||||
|
"Cheaper Arrow Storm": 34,
|
||||||
|
"Cheaper Escape": 35,
|
||||||
|
"Earth Mastery": 36,
|
||||||
|
"Thunder Mastery": 37,
|
||||||
|
"Water Mastery": 38,
|
||||||
|
"Air Mastery": 39,
|
||||||
|
"Fire Mastery": 40,
|
||||||
|
"More Shields": 41,
|
||||||
|
"Stormy Feet": 42,
|
||||||
|
"Refined Gunpowder": 43,
|
||||||
|
"More Traps": 44,
|
||||||
|
"Better Arrow Shield": 45,
|
||||||
|
"Better Leap": 46,
|
||||||
|
"Better Guardian Angels": 47,
|
||||||
|
"Cheaper Arrow Storm (2)": 48,
|
||||||
|
"Precise Shot": 49,
|
||||||
|
"Cheaper Arrow Shield": 50,
|
||||||
|
"Rocket Jump": 51,
|
||||||
|
"Cheaper Escape (2)": 52,
|
||||||
|
"Stronger Hook": 53,
|
||||||
|
"Cheaper Arrow Bomb (2)": 54,
|
||||||
|
"Bouncing Bomb": 55,
|
||||||
|
"Homing Shots": 56,
|
||||||
|
"Shrapnel Bomb": 57,
|
||||||
|
"Elusive": 58,
|
||||||
|
"Double Shots": 59,
|
||||||
|
"Triple Shots": 60,
|
||||||
|
"Power Shots": 61,
|
||||||
|
"Focus": 62,
|
||||||
|
"More Focus": 63,
|
||||||
|
"More Focus (2)": 64,
|
||||||
|
"Traveler": 65,
|
||||||
|
"Patient Hunter": 66,
|
||||||
|
"Stronger Patient Hunter": 67,
|
||||||
|
"Frenzy": 68,
|
||||||
|
"Phantom Ray": 69,
|
||||||
|
"Arrow Rain": 70,
|
||||||
|
"Decimator": 71
|
||||||
|
},
|
||||||
|
"Warrior": {
|
||||||
|
"Bash": 1,
|
||||||
|
"Spear Proficiency 1": 2,
|
||||||
|
"Cheaper Bash": 3,
|
||||||
|
"Double Bash": 4,
|
||||||
|
"Charge": 5,
|
||||||
|
"Heavy Impact": 6,
|
||||||
|
"Vehement": 7,
|
||||||
|
"Tougher Skin": 8,
|
||||||
|
"Uppercut": 9,
|
||||||
|
"Cheaper Charge": 10,
|
||||||
|
"War Scream": 11,
|
||||||
|
"Earth Mastery": 12,
|
||||||
|
"Thunder Mastery": 13,
|
||||||
|
"Water Mastery": 14,
|
||||||
|
"Air Mastery": 15,
|
||||||
|
"Fire Mastery": 16,
|
||||||
|
"Quadruple Bash": 17,
|
||||||
|
"Fireworks": 18,
|
||||||
|
"Half-Moon Swipe": 19,
|
||||||
|
"Flyby Jab": 20,
|
||||||
|
"Flaming Uppercut": 21,
|
||||||
|
"Iron Lungs": 22,
|
||||||
|
"Generalist": 23,
|
||||||
|
"Counter": 24,
|
||||||
|
"Mantle of the Bovemists": 25,
|
||||||
|
"Bak'al's Grasp": 26,
|
||||||
|
"Spear Proficiency 2": 27,
|
||||||
|
"Cheaper Uppercut": 28,
|
||||||
|
"Aerodynamics": 29,
|
||||||
|
"Provoke": 30,
|
||||||
|
"Precise Strikes": 31,
|
||||||
|
"Air Shout": 32,
|
||||||
|
"Enraged Blow": 33,
|
||||||
|
"Flying Kick": 34,
|
||||||
|
"Stronger Mantle": 35,
|
||||||
|
"Manachism": 36,
|
||||||
|
"Boiling Blood": 37,
|
||||||
|
"Ragnarokkr": 38,
|
||||||
|
"Ambidextrous": 39,
|
||||||
|
"Burning Heart": 40,
|
||||||
|
"Stronger Bash": 41,
|
||||||
|
"Intoxicating Blood": 42,
|
||||||
|
"Comet": 43,
|
||||||
|
"Collide": 44,
|
||||||
|
"Rejuvenating Skin": 45,
|
||||||
|
"Uncontainable Corruption": 46,
|
||||||
|
"Radiant Devotee": 47,
|
||||||
|
"Whirlwind Strike": 48,
|
||||||
|
"Mythril Skin": 49,
|
||||||
|
"Armour Breaker": 50,
|
||||||
|
"Shield Strike": 51,
|
||||||
|
"Sparkling Hope": 52,
|
||||||
|
"Massive Bash": 53,
|
||||||
|
"Tempest": 54,
|
||||||
|
"Spirit of the Rabbit": 55,
|
||||||
|
"Massacre": 56,
|
||||||
|
"Axe Kick": 57,
|
||||||
|
"Radiance": 58,
|
||||||
|
"Cheaper Bash 2": 59,
|
||||||
|
"Cheaper War Scream": 60,
|
||||||
|
"Discombobulate": 61,
|
||||||
|
"Thunderclap": 62,
|
||||||
|
"Cyclone": 63,
|
||||||
|
"Second Chance": 64,
|
||||||
|
"Blood Pact": 65,
|
||||||
|
"Haemorrhage": 66,
|
||||||
|
"Brink of Madness": 67,
|
||||||
|
"Cheaper Uppercut 2": 68,
|
||||||
|
"Martyr": 69
|
||||||
|
}
|
||||||
|
}
|
4967
py_script/atree-parse.json
Normal file
Before Width: | Height: | Size: 482 B After Width: | Height: | Size: 482 B |
Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 463 B |
Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 463 B |
Before Width: | Height: | Size: 456 B After Width: | Height: | Size: 456 B |
Before Width: | Height: | Size: 466 B After Width: | Height: | Size: 466 B |
Before Width: | Height: | Size: 580 B After Width: | Height: | Size: 580 B |
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 634 B |
Before Width: | Height: | Size: 647 B After Width: | Height: | Size: 647 B |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 779 B After Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 872 B After Width: | Height: | Size: 872 B |
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 905 B |
Before Width: | Height: | Size: 917 B After Width: | Height: | Size: 917 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 635 B After Width: | Height: | Size: 635 B |
Before Width: | Height: | Size: 591 B After Width: | Height: | Size: 591 B |
Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 709 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 707 B After Width: | Height: | Size: 707 B |
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 797 B |
Before Width: | Height: | Size: 852 B After Width: | Height: | Size: 852 B |
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 554 B |
Before Width: | Height: | Size: 812 B After Width: | Height: | Size: 812 B |
Before Width: | Height: | Size: 513 B After Width: | Height: | Size: 513 B |
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 599 B |
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 599 B |
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 592 B |
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
Before Width: | Height: | Size: 616 B After Width: | Height: | Size: 616 B |
Before Width: | Height: | Size: 700 B After Width: | Height: | Size: 700 B |
Before Width: | Height: | Size: 540 B After Width: | Height: | Size: 540 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 905 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1,007 B After Width: | Height: | Size: 1,007 B |
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 498 B |
Before Width: | Height: | Size: 720 B After Width: | Height: | Size: 720 B |
Before Width: | Height: | Size: 748 B After Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 615 B After Width: | Height: | Size: 615 B |
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 722 B After Width: | Height: | Size: 722 B |
Before Width: | Height: | Size: 561 B After Width: | Height: | Size: 561 B |
Before Width: | Height: | Size: 572 B After Width: | Height: | Size: 572 B |
Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 632 B |
Before Width: | Height: | Size: 674 B After Width: | Height: | Size: 674 B |
Before Width: | Height: | Size: 731 B After Width: | Height: | Size: 731 B |
Before Width: | Height: | Size: 384 B After Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 386 B After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 388 B |
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 483 B After Width: | Height: | Size: 483 B |
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 432 B |
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 432 B |
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 426 B |
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 464 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 725 B After Width: | Height: | Size: 725 B |
Before Width: | Height: | Size: 671 B After Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 767 B After Width: | Height: | Size: 767 B |
Before Width: | Height: | Size: 869 B After Width: | Height: | Size: 869 B |
Before Width: | Height: | Size: 865 B After Width: | Height: | Size: 865 B |
Before Width: | Height: | Size: 625 B After Width: | Height: | Size: 625 B |
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 847 B |
Before Width: | Height: | Size: 961 B After Width: | Height: | Size: 961 B |