Fix crafted powder application formula (again)

This commit is contained in:
b 2021-03-27 15:41:57 -07:00
parent 4780e6cd2c
commit ce6ab17c32
2 changed files with 14 additions and 13 deletions

View file

@ -211,18 +211,19 @@ class Craft{
powders.push(ingred.get("pid")); powders.push(ingred.get("pid"));
} }
} }
for (const p of powders) { // for (const p of powders) {
/* Powders as ingredients in crafted weapons are different than powders applied to non-crafted weapons. Thanks to nbcss for showing me the math. // /* Powders as ingredients in crafted weapons are different than powders applied to non-crafted weapons. Thanks to nbcss for showing me the math.
*/ // */
let powder = powderStats[p]; //use min, max, and convert // let powder = powderStats[p]; //use min, max, and convert
let element = Math.floor((p+0.01)/6); //[0,4], the +0.01 attempts to prevent division error // let element = Math.floor((p+0.01)/6); //[0,4], the +0.01 attempts to prevent division error
let diffLow = Math.floor(nDamBaseLow * powder.convert/100); // let diffLow = Math.floor(nDamBaseLow * powder.convert/100);
nDamBaseLow -= diffLow; // nDamBaseLow -= diffLow;
elemDamBaseLow[element] += diffLow + Math.floor( (powder.min + powder.max) / 2 ); // elemDamBaseLow[element] += diffLow + Math.floor( (powder.min + powder.max) / 2 );
let diffHigh = Math.floor(nDamBaseHigh * powder.convert/100); // let diffHigh = Math.floor(nDamBaseHigh * powder.convert/100);
nDamBaseHigh -= diffHigh; // nDamBaseHigh -= diffHigh;
elemDamBaseHigh[element] += diffHigh + Math.floor( (powder.min + powder.max) / 2 ); // elemDamBaseHigh[element] += diffHigh + Math.floor( (powder.min + powder.max) / 2 );
} // }
statMap.set("ingredPowders", powders);
/* I create a separate variable for each low damage range because we need one damage range to calculate damage with, and it's custom to use the maximum range of the range range. /* I create a separate variable for each low damage range because we need one damage range to calculate damage with, and it's custom to use the maximum range of the range range.
*/ */

View file

@ -40,7 +40,7 @@ function calculateSpellDamage(stats, spellConversions, rawModifier, pctModifier,
//1st round - apply each as ingred, 2nd round - apply as normal //1st round - apply each as ingred, 2nd round - apply as normal
if (weapon.get("tier") === "Crafted") { if (weapon.get("tier") === "Crafted") {
let damageBases = buildStats.get("damageBases").slice(); let damageBases = buildStats.get("damageBases").slice();
for (const p of powders) { for (const p of powders.concat(weapon.get("ingredPowders"))) {
let powder = powderStats[p]; //use min, max, and convert let powder = powderStats[p]; //use min, max, and convert
let element = Math.floor((p+0.01)/6); //[0,4], the +0.01 attempts to prevent division error let element = Math.floor((p+0.01)/6); //[0,4], the +0.01 attempts to prevent division error
let diff = Math.floor(damageBases[0] * powder.convert/100); let diff = Math.floor(damageBases[0] * powder.convert/100);