Adjust Mod Calculation (#30)

Changes:
 + Adjust mod calculation
 + remov max 0 from subtract and addition
 + check in skills for subtract mod
This commit is contained in:
Byroks 2023-12-03 13:07:41 +01:00 committed by GitHub
parent f9737a4cb9
commit 7e6147299b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 5 deletions

View File

@ -124,27 +124,27 @@ export default class M5ModAggregate {
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0);
ret.value = Math.max(0, ret.value + bonus); ret.value = ret.value + bonus;
} }
mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.SUBTRACT); mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.SUBTRACT);
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0);
ret.value = Math.max(0, ret.value - bonus); ret.value = ret.value - bonus;
} }
mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.MULTIPLY); mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.MULTIPLY);
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a * b, 1);
ret.value = Math.max(0, ret.value * bonus); ret.value = Math.max(0, ret.value * bonus);
} }
mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.DIVISION); mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.DIVISION);
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a * b, 1);
ret.value = Math.max(0, Math.floor(ret.value / bonus)); ret.value = Math.max(0, Math.floor(ret.value / bonus));
} }
} }

View File

@ -52,7 +52,8 @@ export class M5Item extends Item {
const res = M5ModAggregate.processPairs(pairs); const res = M5ModAggregate.processPairs(pairs);
res.mods.forEach((mod) => { res.mods.forEach((mod) => {
if ([M5ModOperation.SET, M5ModOperation.FIXED].includes(mod.operation)) calc.fw = mod.value; if ([M5ModOperation.SET, M5ModOperation.FIXED].includes(mod.operation)) calc.fw = mod.value;
else calc.bonus += mod.value; else if ([M5ModOperation.SUBTRACT].includes(mod.operation)) calc.bonus -= mod.value;
else if ([M5ModOperation.ADD].includes(mod.operation)) calc.bonus += mod.value;
}); });
calc.ew = calc.fw + calc.bonus; calc.ew = calc.fw + calc.bonus;