fucking what google
This commit is contained in:
parent
4bc062c464
commit
dc58742aac
@ -30,7 +30,7 @@
|
|||||||
<h3><a href="/">Home</a></h3>
|
<h3><a href="/">Home</a></h3>
|
||||||
<h3><a href="/class.html">Starting Class</a></h3>
|
<h3><a href="/class.html">Starting Class</a></h3>
|
||||||
<h3><a href="/armor.html" class="current">Armor Optimizer</a></h3>
|
<h3><a href="/armor.html" class="current">Armor Optimizer</a></h3>
|
||||||
<h3><a href="/weapon.html">Weapon Finder</a></h3>
|
<h3><a href="/weapons.html">Weapon Finder</a></h3>
|
||||||
<h3><a href="/planner.html">Build Planner</a></h3>
|
<h3><a href="/planner.html">Build Planner</a></h3>
|
||||||
</nav>
|
</nav>
|
||||||
<header>
|
<header>
|
||||||
@ -186,7 +186,6 @@
|
|||||||
<!-- sort -->
|
<!-- sort -->
|
||||||
<article style="flex-basis: 60%; min-width: 320px">
|
<article style="flex-basis: 60%; min-width: 320px">
|
||||||
<b>Results</b>
|
<b>Results</b>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<table id="results"></table>
|
<table id="results"></table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<h3><a href="/">Home</a></h3>
|
<h3><a href="/">Home</a></h3>
|
||||||
<h3><a href="/class.html" class="current">Starting Class</a></h3>
|
<h3><a href="/class.html" class="current">Starting Class</a></h3>
|
||||||
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
||||||
<h3><a href="/weapon.html">Weapon Finder</a></h3>
|
<h3><a href="/weapons.html">Weapon Finder</a></h3>
|
||||||
<h3><a href="/planner.html">Build Planner</a></h3>
|
<h3><a href="/planner.html">Build Planner</a></h3>
|
||||||
</nav>
|
</nav>
|
||||||
<header>
|
<header>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<priority>1.00</priority>
|
<priority>1.00</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://erdtree.palmoe.dk/weapon</loc>
|
<loc>https://erdtree.palmoe.dk/weapons</loc>
|
||||||
<lastmod>2022-04-11T20:44:52+00:00</lastmod>
|
<lastmod>2022-04-11T20:44:52+00:00</lastmod>
|
||||||
<priority>1.00</priority>
|
<priority>1.00</priority>
|
||||||
</url>
|
</url>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
<head>
|
||||||
<head>
|
|
||||||
<!-- metadata -->
|
<!-- metadata -->
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="language" content="english" />
|
<meta name="language" content="english" />
|
||||||
@ -12,21 +11,22 @@
|
|||||||
<!-- title and description -->
|
<!-- title and description -->
|
||||||
<title>Elden Ring Build Tools - Erdtree</title>
|
<title>Elden Ring Build Tools - Erdtree</title>
|
||||||
<link rel="icon" type="image/x-icon " href="/resource/favicon.ico" />
|
<link rel="icon" type="image/x-icon " href="/resource/favicon.ico" />
|
||||||
<meta name="description"
|
<meta name="description" content="Elden Ring Build Tools - Armor, Weapon and Class Optimizer" />
|
||||||
content="Elden Ring Build Tools - Armor, Weapon and Class Optimizer" />
|
|
||||||
<meta name="author" content="vodofrede" />
|
<meta name="author" content="vodofrede" />
|
||||||
<meta property="og:title" content="Elden Ring Build Tools - Erdtree" />
|
<meta property="og:title" content="Elden Ring Build Tools - Erdtree" />
|
||||||
<meta property="og:description"
|
<meta
|
||||||
content="Erdtree - Elden Ring build planner, armor optimizer, weapon finder and more!" />
|
property="og:description"
|
||||||
|
content="Erdtree - Elden Ring build planner, armor optimizer, weapon finder and more!"
|
||||||
|
/>
|
||||||
<meta property="og:url" content="https://erdtree.palmoe.dk" />
|
<meta property="og:url" content="https://erdtree.palmoe.dk" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<nav>
|
<nav>
|
||||||
<h3><a href="/" class="current">Home</a></h3>
|
<h3><a href="/" class="current">Home</a></h3>
|
||||||
<h3><a href="/class.html">Starting Class</a></h3>
|
<h3><a href="/class.html">Starting Class</a></h3>
|
||||||
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
||||||
<h3><a href="/weapon.html">Weapon Finder</a></h3>
|
<h3><a href="/weapons.html">Weapon Finder</a></h3>
|
||||||
<h3><a href="/planner.html">Build Planner</a></h3>
|
<h3><a href="/planner.html">Build Planner</a></h3>
|
||||||
</nav>
|
</nav>
|
||||||
<header>
|
<header>
|
||||||
@ -50,7 +50,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</article>
|
</article>
|
||||||
</a>
|
</a>
|
||||||
<a href="/weapon.html">
|
<a href="/weapons.html">
|
||||||
<article>
|
<article>
|
||||||
<h2>Weapon Finder</h2>
|
<h2>Weapon Finder</h2>
|
||||||
<span>
|
<span>
|
||||||
@ -74,8 +74,7 @@
|
|||||||
<h3>Credits</h3>
|
<h3>Credits</h3>
|
||||||
<p>
|
<p>
|
||||||
This page was heavily inspired by the awesome
|
This page was heavily inspired by the awesome
|
||||||
<a href="https://mugenmonkey.com"
|
<a href="https://mugenmonkey.com" class="highlight">MugenMonkey</a>
|
||||||
class="highlight">MugenMonkey</a>
|
|
||||||
website.
|
website.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -84,12 +83,11 @@
|
|||||||
</main>
|
</main>
|
||||||
<footer>
|
<footer>
|
||||||
<h5>
|
<h5>
|
||||||
Erdtree Planner (<a
|
Erdtree Planner (<a href="https://git.palmoe.dk/vodofrede/erdtree"
|
||||||
href="https://git.palmoe.dk/vodofrede/erdtree">available under
|
>available under BSD-3-Clause license</a
|
||||||
BSD-3-Clause license</a>)
|
>)
|
||||||
</h5>
|
</h5>
|
||||||
<h5>© 2022 vodofrede</h5>
|
<h5>© 2022 vodofrede</h5>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -24,7 +24,7 @@
|
|||||||
<h3><a href="/">Home</a></h3>
|
<h3><a href="/">Home</a></h3>
|
||||||
<h3><a href="/class.html">Starting Class</a></h3>
|
<h3><a href="/class.html">Starting Class</a></h3>
|
||||||
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
||||||
<h3><a href="/weapon.html">Weapon Finder</a></h3>
|
<h3><a href="/weapons.html">Weapon Finder</a></h3>
|
||||||
<h3><a href="/planner.html" class="current">Build Planner</a></h3>
|
<h3><a href="/planner.html" class="current">Build Planner</a></h3>
|
||||||
</nav>
|
</nav>
|
||||||
<header>
|
<header>
|
||||||
|
BIN
src/resource/icon/frostbite.jpg
Normal file
BIN
src/resource/icon/frostbite.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
BIN
src/resource/icon/hemorrhage.jpg
Normal file
BIN
src/resource/icon/hemorrhage.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
BIN
src/resource/icon/madness.jpg
Normal file
BIN
src/resource/icon/madness.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
BIN
src/resource/icon/poison_status.jpg
Normal file
BIN
src/resource/icon/poison_status.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
BIN
src/resource/icon/scarlet_rot.jpg
Normal file
BIN
src/resource/icon/scarlet_rot.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
@ -2,8 +2,8 @@ let WEAPONS;
|
|||||||
let INFUSIONS;
|
let INFUSIONS;
|
||||||
let CORRECTIONS;
|
let CORRECTIONS;
|
||||||
|
|
||||||
let order = "max";
|
let dmgSortOrder = "max";
|
||||||
let ascending = true;
|
let dmgSortAscending = true;
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
WEAPONS = await fetch("/data/weapons.json").then(response => response.json());
|
WEAPONS = await fetch("/data/weapons.json").then(response => response.json());
|
||||||
@ -27,17 +27,10 @@ function update() {
|
|||||||
.map(elem => elem.value);
|
.map(elem => elem.value);
|
||||||
let categories = [...document.getElementsByName("category")].filter(el => el.checked).map(el => el.id);
|
let categories = [...document.getElementsByName("category")].filter(el => el.checked).map(el => el.id);
|
||||||
let onlyBuffable = document.getElementById("buffable").checked;
|
let onlyBuffable = document.getElementById("buffable").checked;
|
||||||
|
|
||||||
// get upgrade level
|
|
||||||
let upgraded = document.getElementById("max-upgrade").checked;
|
|
||||||
|
|
||||||
// get current stats
|
|
||||||
|
|
||||||
if (twoHanding) {
|
if (twoHanding) {
|
||||||
stats[0] = Math.floor(stats[0] * 1.5);
|
stats[0] = Math.floor(stats[0] * 1.5);
|
||||||
}
|
}
|
||||||
|
let upgraded = document.getElementById("max-upgrade").checked;
|
||||||
let infIndex = Object.values(INFUSIONS).findIndex(inf => inf.id == order);
|
|
||||||
|
|
||||||
// update result table header to only include allowed infusions
|
// update result table header to only include allowed infusions
|
||||||
[...document.getElementsByName("damage-result")].forEach(ty => {
|
[...document.getElementsByName("damage-result")].forEach(ty => {
|
||||||
@ -48,8 +41,9 @@ function update() {
|
|||||||
let destination = document.getElementById("weapons");
|
let destination = document.getElementById("weapons");
|
||||||
destination.innerHTML = "";
|
destination.innerHTML = "";
|
||||||
|
|
||||||
// fill table
|
// fill damage table
|
||||||
let template = document.getElementById("weapon");
|
let template = document.getElementById("weapon");
|
||||||
|
let infIndex = Object.values(INFUSIONS).findIndex(inf => inf.id == dmgSortOrder);
|
||||||
Object.values(WEAPONS)
|
Object.values(WEAPONS)
|
||||||
.filter(weapon => {
|
.filter(weapon => {
|
||||||
// filter out weapons that don't fit the current parameters
|
// filter out weapons that don't fit the current parameters
|
||||||
@ -80,9 +74,9 @@ function update() {
|
|||||||
// sort based on current sort order
|
// sort based on current sort order
|
||||||
if (infIndex == -1) {
|
if (infIndex == -1) {
|
||||||
// sort by max
|
// sort by max
|
||||||
return ascending ? m2 - m1 : m1 - m2;
|
return dmgSortAscending ? m2 - m1 : m1 - m2;
|
||||||
} else {
|
} else {
|
||||||
return ascending ? ar2[infIndex] - ar1[infIndex] : ar1[infIndex] - ar2[infIndex];
|
return dmgSortAscending ? ar2[infIndex] - ar1[infIndex] : ar1[infIndex] - ar2[infIndex];
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.forEach(([weapon, attackRatings, max]) => {
|
.forEach(([weapon, attackRatings, max]) => {
|
||||||
@ -99,7 +93,11 @@ function update() {
|
|||||||
|
|
||||||
tr.children[1].innerHTML = max || "-";
|
tr.children[1].innerHTML = max || "-";
|
||||||
attackRatings.forEach((ar, i) => {
|
attackRatings.forEach((ar, i) => {
|
||||||
tr.children[i + 2].innerHTML = ar || "-";
|
let elem = tr.children[i + 2];
|
||||||
|
elem.innerHTML = ar || "-";
|
||||||
|
if (ar == max) {
|
||||||
|
elem.style.fontWeight = "900";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
destination.appendChild(clone);
|
destination.appendChild(clone);
|
||||||
@ -123,8 +121,8 @@ function setAll(name, state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function changeSort(newSort) {
|
function changeSort(newSort) {
|
||||||
ascending = order == newSort ? !ascending : true;
|
dmgSortAscending = dmgSortOrder == newSort ? !dmgSortAscending : true;
|
||||||
order = newSort;
|
dmgSortOrder = newSort;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,25 +137,40 @@ function damage(weapon, infusion, upgraded, stats) {
|
|||||||
let scalingDmg = stats.some((stat, i) => stat < weapon.requirements[i])
|
let scalingDmg = stats.some((stat, i) => stat < weapon.requirements[i])
|
||||||
? baseDmg.map(dmg => dmg * -0.4)
|
? baseDmg.map(dmg => dmg * -0.4)
|
||||||
: baseDmg.map((dmg, ty) => {
|
: baseDmg.map((dmg, ty) => {
|
||||||
let statCorrection = corrections(
|
let calcCorrect = corrections(
|
||||||
CORRECTIONS[weaponInfusion.corrections[ty]],
|
CORRECTIONS[weaponInfusion.corrections[ty]],
|
||||||
stats,
|
stats,
|
||||||
weaponInfusion.masks[ty],
|
weaponInfusion.masks[ty],
|
||||||
);
|
);
|
||||||
let statScaling = weaponInfusion.scaling.map(scaling => {
|
let statScaling = weaponInfusion.scaling.map(
|
||||||
return (
|
scaling =>
|
||||||
infusion.scaling[ty] *
|
infusion.scaling[ty] *
|
||||||
(scaling + scaling * infusion.growth[ty] * upgLevel * (weapon.unique ? 4.0 : 1.0))
|
(scaling + scaling * infusion.growth[ty] * upgLevel * (weapon.unique ? 4.0 : 1.0)),
|
||||||
);
|
);
|
||||||
});
|
|
||||||
return statScaling
|
return statScaling
|
||||||
.map((scaling, statIndex) => (dmg * scaling * statCorrection[statIndex]) / 100.0)
|
.map((scaling, statIndex) => (dmg * scaling * calcCorrect[statIndex]) / 100.0)
|
||||||
.reduce((sum, n) => sum + n);
|
.reduce((sum, n) => sum + n);
|
||||||
});
|
});
|
||||||
|
|
||||||
return Math.floor(baseDmg.reduce((sum, n) => sum + n) + scalingDmg.reduce((sum, n) => sum + n));
|
return Math.floor(baseDmg.reduce((sum, n) => sum + n) + scalingDmg.reduce((sum, n) => sum + n));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function auxiliary(weapon, infusion, upgraded, stats) {
|
||||||
|
const weaponInfusion = weapon.infusions[infusion.id];
|
||||||
|
const upgLevel = upgraded ? (weapon.unique ? 10 : 25) : 0;
|
||||||
|
|
||||||
|
let baseAux = Object.entries(weaponInfusion.aux).map(([ty, [a, b]]) => [ty, Math.floor(a * upgLevel + b)]);
|
||||||
|
|
||||||
|
let calcCorrect = corrections(CORRECTIONS["6"], stats, [0, 0, 0, 0, 1])[4] / 100.0;
|
||||||
|
let statScaling =
|
||||||
|
weaponInfusion.scaling[4] +
|
||||||
|
weaponInfusion.scaling[4] * infusion.growth[4] * upgLevel * (weapon.unique ? 4.0 : 1.0);
|
||||||
|
|
||||||
|
let extraAux = stats[4] >= weapon.requirements[4] ? baseAux.map(([_, aux]) => aux * calcCorrect * statScaling) : 0;
|
||||||
|
|
||||||
|
return baseAux.map(([ty, aux], i) => [ty, aux + extraAux[i]]);
|
||||||
|
}
|
||||||
|
|
||||||
function corrections(calc, stats, masks) {
|
function corrections(calc, stats, masks) {
|
||||||
return stats.map((stat, ty) => {
|
return stats.map((stat, ty) => {
|
||||||
if (!masks[ty]) {
|
if (!masks[ty]) {
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<h3><a href="/">Home</a></h3>
|
<h3><a href="/">Home</a></h3>
|
||||||
<h3><a href="/class.html">Starting Class</a></h3>
|
<h3><a href="/class.html">Starting Class</a></h3>
|
||||||
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
<h3><a href="/armor.html">Armor Optimizer</a></h3>
|
||||||
<h3><a href="/weapon.html" class="current">Weapon Finder</a></h3>
|
<h3><a href="/weapons.html" class="current">Weapon Finder</a></h3>
|
||||||
<h3><a href="/planner.html">Build Planner</a></h3>
|
<h3><a href="/planner.html">Build Planner</a></h3>
|
||||||
</nav>
|
</nav>
|
||||||
<header>
|
<header>
|
||||||
@ -242,6 +242,19 @@
|
|||||||
<label for="magic-infusion">Magic</label>
|
<label for="magic-infusion">Magic</label>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>
|
||||||
|
<input
|
||||||
|
id="occult-infusion"
|
||||||
|
value="occult"
|
||||||
|
type="checkbox"
|
||||||
|
name="infusion"
|
||||||
|
onchange="update()"
|
||||||
|
checked
|
||||||
|
/>
|
||||||
|
<label for="occult-infusion">Occult</label>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>
|
<span>
|
||||||
<input
|
<input
|
||||||
@ -281,19 +294,6 @@
|
|||||||
<label for="blood-infusion">Blood</label>
|
<label for="blood-infusion">Blood</label>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
<span>
|
|
||||||
<input
|
|
||||||
id="occult-infusion"
|
|
||||||
value="occult"
|
|
||||||
type="checkbox"
|
|
||||||
name="infusion"
|
|
||||||
onchange="update()"
|
|
||||||
checked
|
|
||||||
/>
|
|
||||||
<label for="occult-infusion">Occult</label>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<hr />
|
<hr />
|
||||||
<!-- damage types -->
|
<!-- damage types -->
|
||||||
<b>Damage Types</b>
|
<b>Damage Types</b>
|
||||||
@ -330,7 +330,7 @@
|
|||||||
</article>
|
</article>
|
||||||
<!-- results -->
|
<!-- results -->
|
||||||
<article style="flex-basis: 55%">
|
<article style="flex-basis: 55%">
|
||||||
<b>Results</b>
|
<b>Damage</b>
|
||||||
<template id="weapon">
|
<template id="weapon">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
Loading…
Reference in New Issue
Block a user