Fix rounding error
This commit is contained in:
parent
d4327ef36f
commit
148e9001e9
2 changed files with 16 additions and 8 deletions
|
@ -36,10 +36,10 @@ function calculateSpellDamage(stats, spellConversions, rawModifier, pctModifier,
|
||||||
let conversionRatio = spellConversions[i+1]/100;
|
let conversionRatio = spellConversions[i+1]/100;
|
||||||
let min_diff = Math.min(neutralRemainingRaw[0], conversionRatio * neutralBase[0]);
|
let min_diff = Math.min(neutralRemainingRaw[0], conversionRatio * neutralBase[0]);
|
||||||
let max_diff = Math.min(neutralRemainingRaw[1], conversionRatio * neutralBase[1]);
|
let max_diff = Math.min(neutralRemainingRaw[1], conversionRatio * neutralBase[1]);
|
||||||
damages[i+1][0] = Math.floor(damages[i+1][0] + min_diff);
|
damages[i+1][0] = Math.floor(round_near(damages[i+1][0] + min_diff));
|
||||||
damages[i+1][1] = Math.floor(damages[i+1][1] + max_diff);
|
damages[i+1][1] = Math.floor(round_near(damages[i+1][1] + max_diff));
|
||||||
neutralRemainingRaw[0] = Math.floor(neutralRemainingRaw[0] - min_diff);
|
neutralRemainingRaw[0] = Math.floor(round_near(neutralRemainingRaw[0] - min_diff));
|
||||||
neutralRemainingRaw[1] = Math.floor(neutralRemainingRaw[1] - max_diff);
|
neutralRemainingRaw[1] = Math.floor(round_near(neutralRemainingRaw[1] - max_diff));
|
||||||
}
|
}
|
||||||
//console.log(damages);
|
//console.log(damages);
|
||||||
let rawBoosts = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]];
|
let rawBoosts = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]];
|
||||||
|
@ -58,10 +58,10 @@ function calculateSpellDamage(stats, spellConversions, rawModifier, pctModifier,
|
||||||
if (neutralRemainingRaw[1] > 0) {
|
if (neutralRemainingRaw[1] > 0) {
|
||||||
let min_diff = Math.min(neutralRemainingRaw[0], conversionRatio * neutralBase[0]);
|
let min_diff = Math.min(neutralRemainingRaw[0], conversionRatio * neutralBase[0]);
|
||||||
let max_diff = Math.min(neutralRemainingRaw[1], conversionRatio * neutralBase[1]);
|
let max_diff = Math.min(neutralRemainingRaw[1], conversionRatio * neutralBase[1]);
|
||||||
damages[element+1][0] = Math.floor(damages[element+1][0] + min_diff);
|
damages[element+1][0] = Math.floor(round_near(damages[element+1][0] + min_diff));
|
||||||
damages[element+1][1] = Math.floor(damages[element+1][1] + max_diff);
|
damages[element+1][1] = Math.floor(round_near(damages[element+1][1] + max_diff));
|
||||||
neutralRemainingRaw[0] = Math.floor(neutralRemainingRaw[0] - min_diff);
|
neutralRemainingRaw[0] = Math.floor(round_near(neutralRemainingRaw[0] - min_diff));
|
||||||
neutralRemainingRaw[1] = Math.floor(neutralRemainingRaw[1] - max_diff);
|
neutralRemainingRaw[1] = Math.floor(round_near(neutralRemainingRaw[1] - max_diff));
|
||||||
}
|
}
|
||||||
damages[element+1][0] += powder.min;
|
damages[element+1][0] += powder.min;
|
||||||
damages[element+1][1] += powder.max;
|
damages[element+1][1] += powder.max;
|
||||||
|
|
8
utils.js
8
utils.js
|
@ -38,6 +38,14 @@ function perm(a){
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function round_near(value) {
|
||||||
|
let eps = 0.00000001;
|
||||||
|
if (Math.abs(value - Math.round(value)) < eps) {
|
||||||
|
return Math.round(value);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
function setText(id, text) {
|
function setText(id, text) {
|
||||||
document.getElementById(id).textContent = text;
|
document.getElementById(id).textContent = text;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue