diff --git a/crafter.js b/crafter.js
index 80c5521..7d7b159 100644
--- a/crafter.js
+++ b/crafter.js
@@ -249,16 +249,6 @@ function populateFields() {
}
-/* Toggles ONE button
-*/
-function toggleButton(buttonId) {
- let elem = document.getElementById(buttonId);
- if (elem.classList.contains("toggleOn")) {
- elem.classList.remove("toggleOn");
- } else{
- elem.classList.add("toggleOn");
- }
-}
/* Copy the link
*/
diff --git a/custom.js b/custom.js
index 479591d..7ee1190 100644
--- a/custom.js
+++ b/custom.js
@@ -215,11 +215,11 @@ class Custom{
this.statMap.set("nDamBaseLow", Math.floor((parseFloat(this.statMap.get("nDamLow")) + parseFloat(this.statMap.get("nDam"))) / 2) );
this.statMap.set("nDamBaseHigh", Math.floor((parseFloat(this.statMap.get("nDamLow")) + parseFloat(this.statMap.get("nDam"))) / 2) );
for (const e in skp_elements) {
- statMap.set(skp_elements[e]+"DamBaseLow", Math.floor((parseFloat(this.statMap.get(skp_elements[e]+"DamLow")) + parseFloat(this.statMap.get(skp_elements[e]+"Dam"))) / 2));
- statMap.set(skp_elements[e]+"DamBaseHigh", Math.floor((parseFloat(this.statMap.get(skp_elements[e]+"DamLow")) + parseFloat(this.statMap.get(skp_elements[e]+"Dam"))) / 2));
+ this.statMap.set(skp_elements[e]+"DamBaseLow", Math.floor((parseFloat(this.statMap.get(skp_elements[e]+"DamLow")) + parseFloat(this.statMap.get(skp_elements[e]+"Dam"))) / 2));
+ this.statMap.set(skp_elements[e]+"DamBaseHigh", Math.floor((parseFloat(this.statMap.get(skp_elements[e]+"DamLow")) + parseFloat(this.statMap.get(skp_elements[e]+"Dam"))) / 2));
}
+ this.statMap.set("ingredPowders", []);
}
-
}
if (this.statMap.get("category") !== "weapon") {
diff --git a/customizer.html b/customizer.html
index 39e325e..a7d7269 100644
--- a/customizer.html
+++ b/customizer.html
@@ -9,7 +9,7 @@
-
+
WynnCustom
diff --git a/customizer.js b/customizer.js
index 512dcc0..052244b 100644
--- a/customizer.js
+++ b/customizer.js
@@ -8,7 +8,7 @@ const custom_url_tag = location.hash.slice(1);
// console.log(custom_url_base);
// console.log(custom_url_tag);
-const CUSTOM_BUILD_VERSION = "7";
+const CUSTOM_BUILD_VERSION = "7.0.1";
function setTitle() {
let text = "WynnCustom version "+CUSTOM_BUILD_VERSION;
@@ -193,7 +193,6 @@ function calculateCustom() {
}
}
}
-
player_custom_item = new Custom(statMap);
@@ -201,8 +200,6 @@ function calculateCustom() {
document.getElementById("right-container").classList.remove("sticky-box");
let custom_str = encodeCustom(player_custom_item.statMap, true);
location.hash = custom_str;
-
- custom_str = encodeCustom(player_custom_item.statMap, true);
player_custom_item.setHash(custom_str);
console.log(player_custom_item.statMap.get("hash"));
@@ -429,16 +426,7 @@ function populateFields() {
}
}
-/* Toggles ONE button
-*/
-function toggleButton(buttonId) {
- let elem = document.getElementById(buttonId);
- if (elem.classList.contains("toggleOn")) {
- elem.classList.remove("toggleOn");
- } else{
- elem.classList.add("toggleOn");
- }
-}
+
/* Changes an element's text content from yes to no or vice versa
*/
diff --git a/damage_calc.js b/damage_calc.js
index bbde71b..0cedd35 100644
--- a/damage_calc.js
+++ b/damage_calc.js
@@ -131,12 +131,13 @@ function calculateSpellDamage(stats, spellConversions, rawModifier, pctModifier,
let skillBoost = [0];
for (let i in total_skillpoints) {
skillBoost.push(skillPointsToPercentage(total_skillpoints[i]) + buildStats.get("damageBonus")[i] / 100.);
- tooltipinfo.get("skillBoost")[i] = `(${skillPointsToPercentage(total_skillpoints[i]).toFixed(2)} + ${(buildStats.get("damageBonus")[i]/100.).toFixed(2)})`
+ tooltipinfo.get("skillBoost")[parseInt(i,10)+1] = `(${skillPointsToPercentage(total_skillpoints[i]).toFixed(2)} + ${(buildStats.get("damageBonus")[i]/100.).toFixed(2)})`
}
+ tooltipinfo.get("skillBoost")[0] = undefined;
for (let i in damages) {
let damageBoost = 1 + skillBoost[i] + staticBoost;
- tooltipinfo.set("damageBoost", `(1 + ${tooltipinfo.get("skillBoost")[i-1]} + ${tooltipinfo.get("staticBoost")})`)
+ tooltipinfo.set("damageBoost", `(1 + ${(tooltipinfo.get("skillBoost")[i] ? tooltipinfo.get("skillBoost")[i] + " + " : "")} ${tooltipinfo.get("staticBoost")})`)
damages_results.push([
//Math.max(damages[i][0] * strBoost * Math.max(damageBoost,0) * damageMult, 0), // Normal min
//Math.max(damages[i][1] * strBoost * Math.max(damageBoost,0) * damageMult, 0), // Normal max
diff --git a/display.js b/display.js
index c2c821d..fec7acc 100644
--- a/display.js
+++ b/display.js
@@ -2391,13 +2391,16 @@ function displayAdditionalInfo(elemID, item) {
*
* @param {String} parent_id the document id of the parent element
* @param {String} item expandedItem object
+ * @param {String} amp the level of corkian amplifier used. 0 means no amp, 1 means Corkian Amplifier I, etc. [0,3]
*/
-function displayIDProbabilities(parent_id,item) {
+function displayIDProbabilities(parent_id, item, amp) {
if (item.has("fixID") && item.get("fixID")) {return}
let parent_elem = document.getElementById(parent_id);
parent_elem.style.display = "";
+ parent_elem.innerHTML = "";
let title_elem = document.createElement("p");
title_elem.textContent = "Identification Probabilities";
+ title_elem.id = "ID_PROB_TITLE";
title_elem.classList.add("Legendary");
title_elem.classList.add("title");
parent_elem.appendChild(title_elem);
@@ -2406,6 +2409,30 @@ function displayIDProbabilities(parent_id,item) {
disclaimer_elem.textContent = "IDs are rolled on a uniform distribution. A chance of 0% means that either the minimum or maximum possible multiplier must be rolled to get this value."
parent_elem.appendChild(disclaimer_elem);
+ let amp_row = document.createElement("p");
+ amp_row.id = "amp_row";
+ let amp_text = document.createElement("b");
+ amp_text.textContent = "Corkian Amplifier Used: "
+ amp_row.appendChild(amp_text);
+ let amp_1 = document.createElement("button");
+ amp_1.id = "cork_amp_1";
+ amp_1.textContent = "I";
+ amp_row.appendChild(amp_1);
+ let amp_2 = document.createElement("button");
+ amp_2.id = "cork_amp_2";
+ amp_2.textContent = "II";
+ amp_row.appendChild(amp_2);
+ let amp_3 = document.createElement("button");
+ amp_3.id = "cork_amp_3";
+ amp_3.textContent = "III";
+ amp_row.appendChild(amp_3);
+ amp_1.addEventListener("click", (event) => {toggleAmps(1)});
+ amp_2.addEventListener("click", (event) => {toggleAmps(2)});
+ amp_3.addEventListener("click", (event) => {toggleAmps(3)});
+ parent_elem.appendChild(amp_row);
+
+ if (amp != 0) {toggleButton("cork_amp_" + amp)}
+
let item_name = item.get("displayName");
console.log(itemMap.get(item_name))
@@ -2415,6 +2442,12 @@ function displayIDProbabilities(parent_id,item) {
if (rolledIDs.includes(id)) {
let min = item.get("minRolls").get(id);
let max = item.get("maxRolls").get(id);
+ //Apply corkian amps
+ if (val > 0) {
+ let base = itemMap.get(item_name)[id];
+ if (reversedIDs.includes(id)) {max = Math.max( Math.round((0.3 + 0.05*amp) * base), 1)}
+ else {min = Math.max( Math.round((0.3 + 0.05*amp) * base), 1)}
+ }
let row_title = document.createElement("tr");
//row_title.style.textAlign = "left";
@@ -2491,8 +2524,8 @@ function displayIDProbabilities(parent_id,item) {
- stringPDF(id, max, val); //val is base roll
- stringCDF(id, max, val); //val is base roll
+ stringPDF(id, max, val, amp); //val is base roll
+ stringCDF(id, max, val, amp); //val is base roll
title_input_slider.addEventListener("change", (event) => {
let id_name = event.target.id.split("-")[0];
let textbox_elem = document.getElementById(id_name+"-textbox");
@@ -2500,13 +2533,13 @@ function displayIDProbabilities(parent_id,item) {
if (reversedIDs.includes(id_name)) {
if (event.target.value < -1*min) { event.target.value = -1*min}
if (event.target.value > -1*max) { event.target.value = -1*max}
- stringPDF(id_name, -1*event.target.value, val); //val is base roll
- stringCDF(id_name, -1*event.target.value, val); //val is base roll
+ stringPDF(id_name, -1*event.target.value, val, amp); //val is base roll
+ stringCDF(id_name, -1*event.target.value, val, amp); //val is base roll
} else {
if (event.target.value < min) { event.target.value = min}
if (event.target.value > max) { event.target.value = max}
- stringPDF(id_name, 1*event.target.value, val); //val is base roll
- stringCDF(id_name, 1*event.target.value, val); //val is base roll
+ stringPDF(id_name, 1*event.target.value, val, amp); //val is base roll
+ stringCDF(id_name, 1*event.target.value, val, amp); //val is base roll
}
if (textbox_elem && textbox_elem.value !== event.target.value) {
@@ -2533,19 +2566,15 @@ function displayIDProbabilities(parent_id,item) {
slider_elem.value = -event.target.value;
}
- stringPDF(id_name, 1*event.target.value, val);
- stringCDF(id_name, 1*event.target.value, val);
+ stringPDF(id_name, 1*event.target.value, val, amp);
+ stringCDF(id_name, 1*event.target.value, val, amp);
});
}
}
-
-
-
-
}
//helper functions. id - the string of the id's name, val - the value of the id, base - the base value of the item for this id
-function stringPDF(id,val,base) {
+function stringPDF(id,val,base,amp) {
/** [0.3b,1.3b] positive normal
* [1.3b,0.3b] positive reversed
* [1.3b,0.7b] negative normal
@@ -2556,7 +2585,7 @@ function stringPDF(id,val,base) {
*/
let p; let min; let max; let minr; let maxr; let minround; let maxround;
if (base > 0) {
- minr = 0.3; maxr = 1.3;
+ minr = 0.3 + 0.05*amp; maxr = 1.3;
min = Math.max(1, Math.round(minr*base)); max = Math.max(1, Math.round(maxr*base));
minround = (min == max) ? (minr) : ( Math.max(minr, (val-0.5) / base) );
maxround = (min == max) ? (maxr) : ( Math.min(maxr, (val+0.5) / base) );
@@ -2566,8 +2595,6 @@ function stringPDF(id,val,base) {
minround = (min == max) ? (minr) : ( Math.min(minr, (val-0.5) / base) );
maxround = (min == max) ? (maxr) : ( Math.max(maxr, (val+0.5) / base) );
}
-
- console.log(( Math.min(maxr, (val+0.5) / base)));
p = Math.abs(maxround-minround)/Math.abs(maxr-minr)*100;
p = p.toFixed(3);
@@ -2586,10 +2613,10 @@ function stringPDF(id,val,base) {
document.getElementById(id + "-pdf").appendChild(b3);
document.getElementById(id + "-pdf").style.textAlign = "left";
}
-function stringCDF(id,val,base) {
+function stringCDF(id,val,base,amp) {
let p; let min; let max; let minr; let maxr; let minround; let maxround;
if (base > 0) {
- minr = 0.3; maxr = 1.3;
+ minr = 0.3 + 0.05*amp; maxr = 1.3;
min = Math.max(1, Math.round(minr*base)); max = Math.max(1, Math.round(maxr*base));
minround = (min == max) ? (minr) : ( Math.max(minr, (val-0.5) / base) );
maxround = (min == max) ? (maxr) : ( Math.min(maxr, (val+0.5) / base) );
@@ -2600,7 +2627,6 @@ function stringCDF(id,val,base) {
maxround = (min == max) ? (maxr) : ( Math.max(maxr, (val+0.5) / base) );
}
- console.log(( Math.min(maxr, (val+0.5) / base)));
if (reversedIDs.includes(id)) {
p = Math.abs(minr-maxround)/Math.abs(maxr-minr)*100;
} else {
diff --git a/item.js b/item.js
index a0b7d10..27f4bc0 100644
--- a/item.js
+++ b/item.js
@@ -1,4 +1,3 @@
-
/*
* TESTING SECTION
*/
@@ -9,7 +8,7 @@ const item_url_tag = location.hash.slice(1);
// console.log(item_url_base);
// console.log(item_url_tag);
-const ITEM_BUILD_VERSION = "7";
+const ITEM_BUILD_VERSION = "7.0.1";
function setTitle() {
let text = "WynnInfo version "+ITEM_BUILD_VERSION;
@@ -20,28 +19,49 @@ function setTitle() {
setTitle();
let item;
+let amp_state = 0; //the level of corkian map used for ID purposes. Default 0.
function init_itempage() {
//console.log(item_url_tag);
//displayExpandedItem(expandItem(itemMap.get(item_url_tag).statMap, []), "item-view");
try{
- if(itemMap) {
- item = expandItem(itemMap.get(item_url_tag.replaceAll("%20"," ")), []);
- displayExpandedItem(item, "item-view");
- displayAdditionalInfo("additional-info", item);
- displayIDCosts("identification-costs", item);
- if (item.get("set") && sets[item.get("set")]) {
- displayAllSetBonuses("set-bonus-info",item.get("set"));
- }
- console.log(item);
- displayIDProbabilities("identification-probabilities", item);
+ item = expandItem(itemMap.get(item_url_tag.replaceAll("%20"," ")), []);
+ displayExpandedItem(item, "item-view");
+ displayAdditionalInfo("additional-info", item);
+ displayIDCosts("identification-costs", item);
+ if (item.get("set") && sets[item.get("set")]) {
+ displayAllSetBonuses("set-bonus-info",item.get("set"));
}
+ console.log(item);
+ displayIDProbabilities("identification-probabilities", item, amp_state);
} catch (error) {
console.log(error);
}
}
+/** Toggles the corkian amplifier level.
+ *
+ * @param {Number} button_id the ID of the button just pressed.
+ */
+function toggleAmps(button_id) {
+ console.log(button_id);
+ amp_state = 0;
+ if (button_id == 0) {return;}
+ else {
+ let button = document.getElementById("cork_amp_" + button_id);
+ if (!button.classList.contains("toggleOn")) {
+ for (const child of document.getElementById("amp_row").childNodes) {
+ if (child.tagName === "BUTTON" && child.id !== button.id && child.classList.contains("toggleOn")) {
+ child.classList.remove("toggleOn");
+ }
+ }
+ amp_state = button_id;
+ }
+ }
+ displayIDProbabilities("identification-probabilities", item, amp_state);
+}
+
load_init(init_itempage);
diff --git a/utils.js b/utils.js
index f1c100e..722ae6a 100644
--- a/utils.js
+++ b/utils.js
@@ -343,4 +343,19 @@ function createTooltip(elem, element_type, tooltiptext, parent, classList) {
parent.appendChild(elem);
}
return elem;
+}
+
+/** A generic function that toggles the on and off state of a button.
+ *
+ * @param {String} button_id - the id name of the button.
+ */
+function toggleButton(button_id) {
+ let elem = document.getElementById(button_id);
+ if (elem.tagName === "BUTTON") {
+ if (elem.classList.contains("toggleOn")) { //toggle the pressed button off
+ elem.classList.remove("toggleOn");
+ } else {
+ elem.classList.add("toggleOn");
+ }
+ }
}
\ No newline at end of file