Fully working tomes !!!
This commit is contained in:
parent
9227dd0f56
commit
6ea34708a6
6 changed files with 87 additions and 23 deletions
14
js/build.js
14
js/build.js
|
@ -155,10 +155,12 @@ class Build{
|
||||||
*/
|
*/
|
||||||
initBuildStats(){
|
initBuildStats(){
|
||||||
|
|
||||||
let staticIDs = ["hp", "eDef", "tDef", "wDef", "fDef", "aDef", "str", "dex", "int", "def", "agi"];
|
let staticIDs = ["hp", "eDef", "tDef", "wDef", "fDef", "aDef", "str", "dex", "int", "def", "agi", "dmgMobs", "defMobs"];
|
||||||
|
|
||||||
//Create a map of this build's stats
|
//Create a map of this build's stats
|
||||||
let statMap = new Map();
|
let statMap = new Map();
|
||||||
|
statMap.set("damageMultiplier", 1);
|
||||||
|
statMap.set("defMultiplier", 1);
|
||||||
|
|
||||||
for (const staticID of staticIDs) {
|
for (const staticID of staticIDs) {
|
||||||
statMap.set(staticID, 0);
|
statMap.set(staticID, 0);
|
||||||
|
@ -176,7 +178,15 @@ class Build{
|
||||||
}
|
}
|
||||||
for (const staticID of staticIDs) {
|
for (const staticID of staticIDs) {
|
||||||
if (item_stats.get(staticID)) {
|
if (item_stats.get(staticID)) {
|
||||||
statMap.set(staticID, statMap.get(staticID) + item_stats.get(staticID));
|
if (staticID === "dmgMobs") {
|
||||||
|
statMap.set('damageMultiplier', statMap.get('damageMultiplier') * item_stats.get(staticID));
|
||||||
|
}
|
||||||
|
else if (staticID === "defMobs") {
|
||||||
|
statMap.set('defMultiplier', statMap.get('defMultiplier') * item_stats.get(staticID));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
statMap.set(staticID, statMap.get(staticID) + item_stats.get(staticID));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (item_stats.get("majorIds")) {
|
if (item_stats.get("majorIds")) {
|
||||||
|
|
|
@ -157,7 +157,7 @@ function encodeBuild(build, powders, skillpoints) {
|
||||||
} else if (item.statMap.get("crafted")) {
|
} else if (item.statMap.get("crafted")) {
|
||||||
build_string += "CR-"+encodeCraft(item);
|
build_string += "CR-"+encodeCraft(item);
|
||||||
} else if (item.statMap.get("category") === "tome") {
|
} else if (item.statMap.get("category") === "tome") {
|
||||||
let tome_id = item.get("id");
|
let tome_id = item.statMap.get("id");
|
||||||
if (tome_id <= 60) {
|
if (tome_id <= 60) {
|
||||||
// valid normal tome. ID 61-63 is for NONE tomes.
|
// valid normal tome. ID 61-63 is for NONE tomes.
|
||||||
build_version = Math.max(build_version, 6);
|
build_version = Math.max(build_version, 6);
|
||||||
|
|
|
@ -95,8 +95,15 @@ function resetFields(){
|
||||||
elem.classList.remove("toggleOn");
|
elem.classList.remove("toggleOn");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (const elem of skp_order) {
|
||||||
|
console.log(document.getElementById(elem + "_boost_armor").value);
|
||||||
|
document.getElementById(elem + "_boost_armor").value = 0;
|
||||||
|
document.getElementById(elem + "_boost_armor_prev").value = 0;
|
||||||
|
document.getElementById(elem + "_boost_armor").style.background = `linear-gradient(to right, #AAAAAA, #AAAAAA 0%, #AAAAAA 100%)`;
|
||||||
|
document.getElementById(elem + "_boost_armor_label").textContent = `% ${damageClasses[skp_order.indexOf(elem)+1]} Damage Boost: 0`;
|
||||||
|
}
|
||||||
|
|
||||||
const nodes_to_reset = item_nodes.concat(powder_nodes).concat(edit_input_nodes).concat([powder_special_input, boosts_node]);
|
const nodes_to_reset = item_nodes.concat(powder_nodes).concat(edit_input_nodes).concat([powder_special_input, boosts_node, armor_powder_node]);
|
||||||
for (const node of nodes_to_reset) {
|
for (const node of nodes_to_reset) {
|
||||||
node.mark_dirty();
|
node.mark_dirty();
|
||||||
}
|
}
|
||||||
|
@ -317,6 +324,7 @@ function init_autocomplete() {
|
||||||
if (event.detail.selection.value) {
|
if (event.detail.selection.value) {
|
||||||
event.target.value = event.detail.selection.value;
|
event.target.value = event.detail.selection.value;
|
||||||
}
|
}
|
||||||
|
event.target.dispatchEvent(new Event('input'));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,7 +259,10 @@ class ItemInputDisplayNode extends ComputeNode {
|
||||||
// Doesn't exist for weapons.
|
// Doesn't exist for weapons.
|
||||||
this.health_field.textContent = "0";
|
this.health_field.textContent = "0";
|
||||||
}
|
}
|
||||||
this.level_field.textContent = "0";
|
if (this.level_field) {
|
||||||
|
// Doesn't exist for tomes.
|
||||||
|
this.level_field.textContent = "0";
|
||||||
|
}
|
||||||
if (!item) {
|
if (!item) {
|
||||||
this.input_field.classList.add("is-invalid");
|
this.input_field.classList.add("is-invalid");
|
||||||
return null;
|
return null;
|
||||||
|
@ -274,7 +277,10 @@ class ItemInputDisplayNode extends ComputeNode {
|
||||||
// Doesn't exist for weapons.
|
// Doesn't exist for weapons.
|
||||||
this.health_field.textContent = item.statMap.get('hp');
|
this.health_field.textContent = item.statMap.get('hp');
|
||||||
}
|
}
|
||||||
this.level_field.textContent = item.statMap.get('lvl');
|
if (this.level_field) {
|
||||||
|
// Doesn't exist for tomes.
|
||||||
|
this.level_field.textContent = item.statMap.get('lvl');
|
||||||
|
}
|
||||||
this.image.classList.add(tier + "-shadow");
|
this.image.classList.add(tier + "-shadow");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -401,7 +407,14 @@ class BuildAssembleNode extends ComputeNode {
|
||||||
input_map.get('ring1-input'),
|
input_map.get('ring1-input'),
|
||||||
input_map.get('ring2-input'),
|
input_map.get('ring2-input'),
|
||||||
input_map.get('bracelet-input'),
|
input_map.get('bracelet-input'),
|
||||||
input_map.get('necklace-input')
|
input_map.get('necklace-input'),
|
||||||
|
input_map.get('weaponTome1-input'),
|
||||||
|
input_map.get('weaponTome2-input'),
|
||||||
|
input_map.get('armorTome1-input'),
|
||||||
|
input_map.get('armorTome2-input'),
|
||||||
|
input_map.get('armorTome3-input'),
|
||||||
|
input_map.get('armorTome4-input'),
|
||||||
|
input_map.get('guildTome1-input')
|
||||||
];
|
];
|
||||||
let weapon = input_map.get('weapon-input');
|
let weapon = input_map.get('weapon-input');
|
||||||
let level = input_map.get('level-input');
|
let level = input_map.get('level-input');
|
||||||
|
@ -759,7 +772,7 @@ class DisplayBuildWarningsNode extends ComputeNode {
|
||||||
}
|
}
|
||||||
let baditem = document.createElement("p");
|
let baditem = document.createElement("p");
|
||||||
baditem.classList.add("nocolor"); baditem.classList.add("itemp");
|
baditem.classList.add("nocolor"); baditem.classList.add("itemp");
|
||||||
baditem.textContent = item.get("displayName") + " requires level " + item_lvl + " to use.";
|
baditem.textContent = item.statMap.get("displayName") + " requires level " + item_lvl + " to use.";
|
||||||
lvlWarning.appendChild(baditem);
|
lvlWarning.appendChild(baditem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -791,7 +804,13 @@ class AggregateStatsNode extends ComputeNode {
|
||||||
for (const [k, v] of input_map.entries()) {
|
for (const [k, v] of input_map.entries()) {
|
||||||
for (const [k2, v2] of v.entries()) {
|
for (const [k2, v2] of v.entries()) {
|
||||||
if (output_stats.has(k2)) {
|
if (output_stats.has(k2)) {
|
||||||
output_stats.set(k2, v2 + output_stats.get(k2));
|
// TODO: ugly AF
|
||||||
|
if (k2 === 'damageMultiplier' || k2 === 'defMultiplier') {
|
||||||
|
output_stats.set(k2, v2 * output_stats.get(k2));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
output_stats.set(k2, v2 + output_stats.get(k2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
output_stats.set(k2, v2);
|
output_stats.set(k2, v2);
|
||||||
|
@ -815,8 +834,6 @@ class AggregateEditableIDNode extends ComputeNode {
|
||||||
const weapon = input_map.get('weapon'); input_map.delete('weapon');
|
const weapon = input_map.get('weapon'); input_map.delete('weapon');
|
||||||
|
|
||||||
const output_stats = new Map(build.statMap);
|
const output_stats = new Map(build.statMap);
|
||||||
output_stats.set("damageMultiplier", 1);
|
|
||||||
output_stats.set("defMultiplier", 1);
|
|
||||||
for (const [k, v] of input_map.entries()) {
|
for (const [k, v] of input_map.entries()) {
|
||||||
output_stats.set(k, v);
|
output_stats.set(k, v);
|
||||||
}
|
}
|
||||||
|
@ -944,6 +961,15 @@ function builder_graph_init() {
|
||||||
//new PrintNode(eq+'-debug').link_to(item_input);
|
//new PrintNode(eq+'-debug').link_to(item_input);
|
||||||
//document.querySelector("#"+eq+"-tooltip").setAttribute("onclick", "collapse_element('#"+ eq +"-tooltip');"); //toggle_plus_minus('" + eq + "-pm');
|
//document.querySelector("#"+eq+"-tooltip").setAttribute("onclick", "collapse_element('#"+ eq +"-tooltip');"); //toggle_plus_minus('" + eq + "-pm');
|
||||||
}
|
}
|
||||||
|
console.log(none_tomes);
|
||||||
|
for (const [eq, none_item] of zip2(tome_fields, [none_tomes[0], none_tomes[0], none_tomes[1], none_tomes[1], none_tomes[1], none_tomes[1], none_tomes[2]])) {
|
||||||
|
let input_field = document.getElementById(eq+"-choice");
|
||||||
|
let item_image = document.getElementById(eq+"-img");
|
||||||
|
|
||||||
|
let item_input = new ItemInputNode(eq+'-input', input_field, none_item);
|
||||||
|
item_nodes.push(item_input);
|
||||||
|
new ItemInputDisplayNode(eq+'-input-display', eq, item_image).link_to(item_input);
|
||||||
|
}
|
||||||
|
|
||||||
// weapon image changer node.
|
// weapon image changer node.
|
||||||
let weapon_image = document.getElementById("weapon-img");
|
let weapon_image = document.getElementById("weapon-img");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const TOME_DB_VERSION = 1;
|
const TOME_DB_VERSION = 2;
|
||||||
// @See https://github.com/mdn/learning-area/blob/master/javascript/apis/client-side-storage/indexeddb/video-store/index.jsA
|
// @See https://github.com/mdn/learning-area/blob/master/javascript/apis/client-side-storage/indexeddb/video-store/index.jsA
|
||||||
|
|
||||||
let tdb;
|
let tdb;
|
||||||
|
@ -120,6 +120,11 @@ async function load_tome_init() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let none_tomes = [
|
||||||
|
["tome", "weaponTome", "No Weapon Tome"],
|
||||||
|
["tome", "armorTome", "No Armor Tome"],
|
||||||
|
["tome", "guildTome", "No Guild Tome"]
|
||||||
|
];
|
||||||
function init_tome_maps() {
|
function init_tome_maps() {
|
||||||
//warp
|
//warp
|
||||||
tomeMap = new Map();
|
tomeMap = new Map();
|
||||||
|
@ -131,17 +136,12 @@ function init_tome_maps() {
|
||||||
tomeLists.set(it, []);
|
tomeLists.set(it, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
let noneTomes = [
|
|
||||||
["tome", "weaponTome", "No Weapon Tome"],
|
|
||||||
["tome", "armorTome", "No Armor Tome"],
|
|
||||||
["tome", "guildTome", "No Guild Tome"]
|
|
||||||
];
|
|
||||||
for (let i = 0; i < 3; i++) {
|
for (let i = 0; i < 3; i++) {
|
||||||
let tome = Object();
|
let tome = Object();
|
||||||
tome.slots = 0;
|
tome.slots = 0;
|
||||||
tome.category = noneTomes[i][0];
|
tome.category = none_tomes[i][0];
|
||||||
tome.type = noneTomes[i][1];
|
tome.type = none_tomes[i][1];
|
||||||
tome.name = noneTomes[i][2];
|
tome.name = none_tomes[i][2];
|
||||||
tome.displayName = tome.name;
|
tome.displayName = tome.name;
|
||||||
tome.set = null;
|
tome.set = null;
|
||||||
tome.quest = null;
|
tome.quest = null;
|
||||||
|
@ -160,14 +160,14 @@ function init_tome_maps() {
|
||||||
//dependency - load.js
|
//dependency - load.js
|
||||||
clean_item(tome);
|
clean_item(tome);
|
||||||
|
|
||||||
noneTomes[i] = tome;
|
none_tomes[i] = tome;
|
||||||
}
|
}
|
||||||
tomes = tomes.concat(noneTomes);
|
tomes = tomes.concat(none_tomes);
|
||||||
for (const tome of tomes) {
|
for (const tome of tomes) {
|
||||||
if (tome.remapID === undefined) {
|
if (tome.remapID === undefined) {
|
||||||
tomeLists.get(tome.type).push(tome.displayName);
|
tomeLists.get(tome.type).push(tome.displayName);
|
||||||
tomeMap.set(tome.displayName, tome);
|
tomeMap.set(tome.displayName, tome);
|
||||||
if (noneTomes.includes(tome)) {
|
if (none_tomes.includes(tome)) {
|
||||||
tomeIDMap.set(tome.id, "");
|
tomeIDMap.set(tome.id, "");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
20
tomes.json
20
tomes.json
|
@ -9,6 +9,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defmobs": 3,
|
||||||
"thorns": 6,
|
"thorns": 6,
|
||||||
"ref": 6,
|
"ref": 6,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
|
@ -23,6 +24,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"thorns": 8,
|
"thorns": 8,
|
||||||
"ref": 8,
|
"ref": 8,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -36,6 +38,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defMobs": 3,
|
||||||
"exploding": 5,
|
"exploding": 5,
|
||||||
"mdPct": 5,
|
"mdPct": 5,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
|
@ -50,6 +53,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"thorns": 6,
|
"thorns": 6,
|
||||||
"reflection": 6,
|
"reflection": 6,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -63,6 +67,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defMobs": 3,
|
||||||
"sdPct": 5,
|
"sdPct": 5,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -76,6 +81,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"sdPct": 6,
|
"sdPct": 6,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
"id": 5
|
"id": 5
|
||||||
|
@ -88,6 +94,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defMobs": 3,
|
||||||
"hprRaw": 15,
|
"hprRaw": 15,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -101,6 +108,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"hprRaw": 60,
|
"hprRaw": 60,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
"id": 7
|
"id": 7
|
||||||
|
@ -113,6 +121,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defMobs": 3,
|
||||||
"ls": 25,
|
"ls": 25,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -126,6 +135,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"ls": 85,
|
"ls": 85,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
"id": 9
|
"id": 9
|
||||||
|
@ -138,6 +148,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defMobs": 3,
|
||||||
"lb": 5,
|
"lb": 5,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -151,6 +162,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"lb": 6,
|
"lb": 6,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
"id": 11
|
"id": 11
|
||||||
|
@ -163,6 +175,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 60,
|
"lvl": 60,
|
||||||
|
"defMobs": 3,
|
||||||
"spd": 5,
|
"spd": 5,
|
||||||
"hpBonus": 120,
|
"hpBonus": 120,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -176,6 +189,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 5,
|
||||||
"spd": 6,
|
"spd": 6,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
"id": 13
|
"id": 13
|
||||||
|
@ -188,6 +202,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 8,
|
||||||
"eDefPct": 10,
|
"eDefPct": 10,
|
||||||
"hpBonus": 150,
|
"hpBonus": 150,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -201,6 +216,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 8,
|
||||||
"tDefPct": 10,
|
"tDefPct": 10,
|
||||||
"hpBonus": 150,
|
"hpBonus": 150,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -214,6 +230,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 8,
|
||||||
"wDefPct": 10,
|
"wDefPct": 10,
|
||||||
"hpBonus": 150,
|
"hpBonus": 150,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -227,6 +244,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 8,
|
||||||
"fDefPct": 10,
|
"fDefPct": 10,
|
||||||
"hpBonus": 150,
|
"hpBonus": 150,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -240,6 +258,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 8,
|
||||||
"aDefPct": 10,
|
"aDefPct": 10,
|
||||||
"hpBonus": 150,
|
"hpBonus": 150,
|
||||||
"fixID": false,
|
"fixID": false,
|
||||||
|
@ -253,6 +272,7 @@
|
||||||
"drop": "never",
|
"drop": "never",
|
||||||
"restrict": "Soulbound Item",
|
"restrict": "Soulbound Item",
|
||||||
"lvl": 100,
|
"lvl": 100,
|
||||||
|
"defMobs": 8,
|
||||||
"eDefPct": 6,
|
"eDefPct": 6,
|
||||||
"tDefPct": 6,
|
"tDefPct": 6,
|
||||||
"wDefPct": 6,
|
"wDefPct": 6,
|
||||||
|
|
Loading…
Reference in a new issue