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:
parent
f9737a4cb9
commit
7e6147299b
|
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue