structure for powder special boosts
This commit is contained in:
parent
18bdcf86f8
commit
96b837fcc6
63
display.js
63
display.js
|
@ -376,7 +376,7 @@ function displayExpandedItem(item, parent_id){
|
|||
p_elem.appendChild(powderPrefix);
|
||||
|
||||
let powders = item.get("powders");
|
||||
console.log(powders);
|
||||
//console.log(powders);
|
||||
for (let i = 0; i < powders.length; i++) {
|
||||
let powder = document.createElement("b");
|
||||
powder.textContent = numerals.get((powders[i]%6)+1)+" ";
|
||||
|
@ -483,7 +483,6 @@ function displayExpandedItem(item, parent_id){
|
|||
}
|
||||
}
|
||||
if (element !== "") {//powder special is "[e,t,w,f,a]+[0,1,2,3,4]"
|
||||
console.log(skp_elements.indexOf(element));
|
||||
let powderSpecial = powderSpecialStats[ skp_elements.indexOf(element)];
|
||||
let specialSuffixes = new Map([ ["Duration", " sec"], ["Radius", " blocks"], ["Chains", ""], ["Damage", "%"], ["Damage Boost", "%"], ["Knockback", " blocks"] ]);
|
||||
let specialTitle = document.createElement("p");
|
||||
|
@ -660,7 +659,6 @@ function displayMeleeDamage(parent_elem, overallparent_elem, meleeStats){
|
|||
//overall average DPS
|
||||
let overallaverageDamage = document.createElement("p");
|
||||
overallaverageDamage.classList.add("itemp");
|
||||
console.log(stats);
|
||||
overallaverageDamage.textContent = "Average DPS: " + stats[10];
|
||||
overallparent_elem.append(overallaverageDamage);
|
||||
overallparent_elem.append(document.createElement("br"));
|
||||
|
@ -938,6 +936,65 @@ function displayDefenseStats(parent_elem, build, insertSummary){
|
|||
|
||||
parent_elem.append(statsTable);
|
||||
}
|
||||
function displayPowderSpecials(parent_elem, powderSpecials) {
|
||||
parent_elem.textContent = "Powder Specials";
|
||||
let specials = powderSpecials.slice();
|
||||
//each entry of powderSpecials is [ps, power]
|
||||
for (special of specials) {
|
||||
//iterate through the special and display it warp
|
||||
let powder_special = document.createElement("p");
|
||||
powder_special.classList.add("left");
|
||||
let specialSuffixes = new Map([ ["Duration", " sec"], ["Radius", " blocks"], ["Chains", ""], ["Damage", "%"], ["Damage Boost", "%"], ["Knockback", " blocks"] ]);
|
||||
let specialTitle = document.createElement("p");
|
||||
let specialEffects = document.createElement("p");
|
||||
specialTitle.classList.add("left");
|
||||
specialTitle.classList.add("itemp");
|
||||
specialTitle.classList.add(damageClasses[powderSpecialStats.indexOf(special[0]) + 1]);
|
||||
specialEffects.classList.add("left");
|
||||
specialEffects.classList.add("itemp");
|
||||
specialEffects.classList.add("nocolor");
|
||||
let effects = special["weaponSpecialEffects"];
|
||||
specialTitle.textContent = "bruh";
|
||||
//specialTitle.textContent = special["weaponSpecialName"];
|
||||
/*
|
||||
if (element !== "") {//powder special is "[e,t,w,f,a]+[0,1,2,3,4]"
|
||||
let powderSpecial = powderSpecialStats[ skp_elements.indexOf(element)];
|
||||
let effects;
|
||||
if (item.get("category") === "weapon") {//weapon
|
||||
|
||||
}else if (item.get("category") === "armor") {//armor
|
||||
effects = powderSpecial["armorSpecialEffects"];
|
||||
specialTitle.textContent += powderSpecial["armorSpecialName"] + ": ";
|
||||
}
|
||||
for (const [key,value] of effects) {
|
||||
if (key !== "Description") {
|
||||
let effect = document.createElement("p");
|
||||
effect.classList.add("itemp");
|
||||
effect.textContent += key + ": " + value[power] + specialSuffixes.get(key);
|
||||
if(key === "Damage"){
|
||||
effect.textContent += elementIcons[skp_elements.indexOf(element)];
|
||||
}
|
||||
if (element === "w") {
|
||||
effect.textContent += " / Mana Used";
|
||||
}
|
||||
specialEffects.appendChild(effect);
|
||||
}else{
|
||||
specialTitle.textContent += "[ " + effects.get("Description") + " ]";
|
||||
}
|
||||
}
|
||||
specialTitle.append(specialEffects);
|
||||
powder_special.appendChild(specialTitle);
|
||||
|
||||
|
||||
parent_div.append(powder_special);
|
||||
}
|
||||
*/
|
||||
powder_special.appendChild(specialTitle);
|
||||
powder_special.appendChild(specialEffects);
|
||||
parent_elem.appendChild(powder_special);
|
||||
}
|
||||
|
||||
}
|
||||
function displaySpellDamage(parent_elem, overallparent_elem, build, spell, spellIdx) {
|
||||
parent_elem.textContent = "";
|
||||
|
||||
|
|
187
index.html
187
index.html
|
@ -185,27 +185,206 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button class = "button toggleOff" id = "vanish-boost" onclick = "updateBoosts('vanish-boost')">
|
||||
<button class = "button" id = "vanish-boost" onclick = "updateBoosts('vanish-boost')">
|
||||
Vanish Boost (+80%)
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
<button class = "button toggleOff" id = "warscream-boost" onclick = "updateBoosts('warscream-boost')">
|
||||
<button class = "button" id = "warscream-boost" onclick = "updateBoosts('warscream-boost')">
|
||||
War Scream (+10%)
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
<button class = "button toggleOff" id = "yourtotem-boost" onclick = "updateBoosts('yourtotem-boost')">
|
||||
<button class = "button" id = "yourtotem-boost" onclick = "updateBoosts('yourtotem-boost')">
|
||||
Your Totem (+35%)
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
<button class = "button toggleOff" id = "allytotem-boost" onclick = "updateBoosts('allytotem-boost')">
|
||||
<button class = "button" id = "allytotem-boost" onclick = "updateBoosts('allytotem-boost')">
|
||||
Ally Totem (+15%)
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class = "powder-specials">
|
||||
<div class = "powder-special-stats" style = "grid-column:1;grid-row:1">
|
||||
<div class = "center" id = "powder-special-stats">
|
||||
<p class = "itemp">Powder Specials</p>
|
||||
</div>
|
||||
</div>
|
||||
<div style = "grid-column:2;grid-row:1">
|
||||
<div class = "powder-special" style = "grid-column:2;grid-row:1">
|
||||
<div class = "center" id = "powder-special">
|
||||
<p class = "itemp Earth">
|
||||
Quake
|
||||
</p>
|
||||
<p class = "Quake itemp" id = "Quake">
|
||||
<b>
|
||||
<button class = "button" id = "Quake-1" onclick = "updatePowderSpecials('Quake-1')">
|
||||
4
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Quake-2" onclick = "updatePowderSpecials('Quake-2')">
|
||||
4.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Quake-3" onclick = "updatePowderSpecials('Quake-3')">
|
||||
5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Quake-4" onclick = "updatePowderSpecials('Quake-4')">
|
||||
5.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Quake-5" onclick = "updatePowderSpecials('Quake-5')">
|
||||
6
|
||||
</button>
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class = "powder-special" style = "grid-column:2;grid-row:2">
|
||||
<div class = "center" id = "powder-special">
|
||||
<p class = "itemp Thunder">
|
||||
Chain Lightning
|
||||
</p>
|
||||
<p class = "Chain_Lightning itemp" id = "Chain_Lightning">
|
||||
<b>
|
||||
<button class = "button" id = "Chain_Lightning-1" onclick = "updatePowderSpecials('Chain_Lightning-1')">
|
||||
4
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Chain_Lightning-2" onclick = "updatePowderSpecials('Chain_Lightning-2')">
|
||||
4.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Chain_Lightning-3" onclick = "updatePowderSpecials('Chain_Lightning-3')">
|
||||
5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Chain_Lightning-4" onclick = "updatePowderSpecials('Chain_Lightning-4')">
|
||||
5.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Chain_Lightning-5" onclick = "updatePowderSpecials('Chain_Lightning-5')">
|
||||
6
|
||||
</button>
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class = "powder-special" style = "grid-column:2;grid-row:3">
|
||||
<div class = "center" id = "powder-special">
|
||||
<p class = "itemp Water">
|
||||
Curse
|
||||
</p>
|
||||
<p class = "Curse itemp" id = "Curse">
|
||||
<b>
|
||||
<button class = "button" id = "Curse-1" onclick = "updatePowderSpecials('Curse-1')">
|
||||
4
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Curse-2" onclick = "updatePowderSpecials('Curse-2')">
|
||||
4.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Curse-3" onclick = "updatePowderSpecials('Curse-3')">
|
||||
5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Curse-4" onclick = "updatePowderSpecials('Curse-4')">
|
||||
5.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Curse-5" onclick = "updatePowderSpecials('Curse-5')">
|
||||
6
|
||||
</button>
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class = "powder-special" style = "grid-column:2;grid-row:4">
|
||||
<div class = "center" id = "powder-special">
|
||||
<p class = "itemp Fire">
|
||||
Courage
|
||||
</p>
|
||||
<p class = "Courage itemp" id = "Courage">
|
||||
<b>
|
||||
<button class = "button" id = "Courage-1" onclick = "updatePowderSpecials('Courage-1')">
|
||||
4
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Courage-2" onclick = "updatePowderSpecials('Courage-2')">
|
||||
4.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Courage-3" onclick = "updatePowderSpecials('Courage-3')">
|
||||
5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Courage-4" onclick = "updatePowderSpecials('Courage-4')">
|
||||
5.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Courage-5" onclick = "updatePowderSpecials('Courage-5')">
|
||||
6
|
||||
</button>
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class = "powder-special" style = "grid-column:2;grid-row:5">
|
||||
<div class = "center" id = "powder-special">
|
||||
<p class = "itemp Air">
|
||||
Air Prison
|
||||
</p>
|
||||
<p class = "Air_Prison itemp" id = "Air_Prison">
|
||||
<b>
|
||||
<button class = "button" id = "Air_Prison-1" onclick = "updatePowderSpecials('Air_Prison-1')">
|
||||
4
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Air_Prison-2" onclick = "updatePowderSpecials('Air_Prison-2')">
|
||||
4.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Air_Prison-3" onclick = "updatePowderSpecials('Air_Prison-3')">
|
||||
5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Air_Prison-4" onclick = "updatePowderSpecials('Air_Prison-4')">
|
||||
5.5
|
||||
</button>
|
||||
</b>
|
||||
<b>
|
||||
<button class = "button" id = "Air_Prison-5" onclick = "updatePowderSpecials('Air_Prison-5')">
|
||||
6
|
||||
</button>
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
12
styles.css
12
styles.css
|
@ -20,7 +20,7 @@ div {
|
|||
padding: 0%;
|
||||
}
|
||||
|
||||
.equipment {
|
||||
.equipment{
|
||||
padding: 0%;
|
||||
display: grid;
|
||||
grid-template-columns: min-content min-content min-content;
|
||||
|
@ -36,6 +36,14 @@ div {
|
|||
grid-auto-rows: minmax(60px, auto);
|
||||
}
|
||||
|
||||
.powder-specials{
|
||||
padding: 0% 4% 2%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 5px;
|
||||
grid-auto-rows: minmax(60px, auto);
|
||||
}
|
||||
|
||||
.equipment, .skillpoints, .center, .header, .all, .nocolor{
|
||||
background: #121516;
|
||||
color: #aaa;
|
||||
|
@ -70,7 +78,7 @@ a.link{
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
.build-helmet, .build-chestplate, .build-leggings, .build-boots, .build-ring1, .build-ring2, .build-bracelet, .build-necklace, .build-weapon, .build-order, .build-overall, .build-melee-stats, .build-defense-stats, .spell-info, .set-info {
|
||||
.build-helmet, .build-chestplate, .build-leggings, .build-boots, .build-ring1, .build-ring2, .build-bracelet, .build-necklace, .build-weapon, .build-order, .build-overall, .build-melee-stats, .build-defense-stats, .spell-info, .set-info, .powder-special, .powder-special-stats {
|
||||
color: #aaa;
|
||||
background: #121516;
|
||||
border: 3px solid #BCBCBC;
|
||||
|
|
37
test.js
37
test.js
|
@ -315,12 +315,10 @@ function decodeBuild(url_tag) {
|
|||
}
|
||||
|
||||
let powder_info = info[1].slice(39);
|
||||
console.log(powder_info);
|
||||
// TODO: Make this run in linear instead of quadratic time...
|
||||
for (let i = 0; i < 5; ++i) {
|
||||
let powders = "";
|
||||
let n_blocks = Base64.toInt(powder_info.charAt(0));
|
||||
console.log(n_blocks + " blocks");
|
||||
powder_info = powder_info.slice(1);
|
||||
for (let j = 0; j < n_blocks; ++j) {
|
||||
let block = powder_info.slice(0,5);
|
||||
|
@ -363,7 +361,6 @@ function encodeBuild() {
|
|||
build_string += Base64.fromIntN(getValue(skp + "-skp"), 2); // Maximum skillpoints: 2048
|
||||
}
|
||||
build_string += Base64.fromIntN(player_build.level, 2);
|
||||
console.log(Base64.fromIntN(player_build.level, 2));
|
||||
for (const _powderset of player_build.powders) {
|
||||
let n_bits = Math.ceil(_powderset.length / 6);
|
||||
build_string += Base64.fromIntN(n_bits, 1); // Hard cap of 378 powders.
|
||||
|
@ -463,23 +460,49 @@ function updateStats() {
|
|||
player_build.assigned_skillpoints += delta_total;
|
||||
calculateBuildStats();
|
||||
}
|
||||
/* Updates all external boosts (boosts from spells + powders)
|
||||
/* Updates all spell boosts
|
||||
*/
|
||||
function updateBoosts(buttonId) {
|
||||
let elem = document.getElementById(buttonId);
|
||||
if (elem.classList.contains("toggleOn")) {
|
||||
player_build.damageMultiplier -= damageMultipliers.get(buttonId.split("-")[0]);
|
||||
elem.classList.remove("toggleOn");
|
||||
elem.classList.add("toggleOff");
|
||||
}else{
|
||||
player_build.damageMultiplier += damageMultipliers.get(buttonId.split("-")[0]);
|
||||
elem.classList.remove("toggleOff");
|
||||
elem.classList.add("toggleOn");
|
||||
}
|
||||
//displayPowderBoosts(); TODO WRITE
|
||||
calculateBuildStats();
|
||||
}
|
||||
|
||||
/* Updates all powder special boosts
|
||||
*/
|
||||
function updatePowderSpecials(buttonId){
|
||||
let name = (buttonId).split("-")[0];
|
||||
let specialNames = ["Quake", "Chain Lightning", "Curse", "Courage", "Air Prison"];
|
||||
let powderSpecials = []; // [ [special, power], [special, power]]
|
||||
let elem = document.getElementById(buttonId);
|
||||
if (elem.classList.contains("toggleOn")) {
|
||||
elem.classList.remove("toggleOn");
|
||||
}else {
|
||||
for (let i = 1;i < 6; i++) {
|
||||
document.getElementById(name + "-" + i).classList.remove("toggleOn");
|
||||
}
|
||||
elem.classList.add("toggleOn");
|
||||
}
|
||||
for (const sName of specialNames) {
|
||||
for (let i = 1;i < 6; i++) {
|
||||
if (document.getElementById(sName.replace(" ","_") + "-" + i).classList.contains("toggleOn")) {
|
||||
let powderSpecial = powderSpecialStats[specialNames.indexOf(sName.replace("_"," "))];
|
||||
powderSpecials.push([powderSpecial, i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//console.log(powderSpecials);
|
||||
displayPowderSpecials(document.getElementById("powder-special-stats"), powderSpecials);
|
||||
calculateBuildStats(); //also make damage boosts apply ;-;
|
||||
}
|
||||
/* Calculates all build statistics and updates the entire display.
|
||||
*/
|
||||
function calculateBuildStats() {
|
||||
|
|
Loading…
Reference in a new issue