start fixing fate dice with other shit
This commit is contained in:
parent
4ed561a15b
commit
b6b1f872d2
|
@ -466,6 +466,8 @@ export const getRollConf = (rollStr: string): RollConf => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loggingEnabled && log(LT.LOG, `RollConf before cleanup: ${JSON.stringify(rollConf)}`);
|
||||||
|
|
||||||
// Verify the parse, throwing errors for every invalid config
|
// Verify the parse, throwing errors for every invalid config
|
||||||
if (rollConf.dieCount < 0) {
|
if (rollConf.dieCount < 0) {
|
||||||
throw new Error('NoZerosAllowed_base');
|
throw new Error('NoZerosAllowed_base');
|
||||||
|
@ -502,20 +504,26 @@ export const getRollConf = (rollStr: string): RollConf => {
|
||||||
if (rollConf.keepLow.on && rollConf.keepLow.count === 0) {
|
if (rollConf.keepLow.on && rollConf.keepLow.count === 0) {
|
||||||
throw new Error('NoZerosAllowed_keepLow');
|
throw new Error('NoZerosAllowed_keepLow');
|
||||||
}
|
}
|
||||||
if (rollConf.reroll.on && !rollConf.dPercent.on && rollConf.reroll.nums.includes(0)) {
|
|
||||||
throw new Error('NoZerosAllowed_reroll');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter rollConf num lists to only include valid numbers
|
// Filter rollConf num lists to only include valid numbers
|
||||||
const validNumFilter = (curNum: number) => curNum <= rollConf.dieSize && curNum > (rollConf.dPercent.on ? -1 : 0);
|
const validNumFilter = (curNum: number) => {
|
||||||
|
if (rollConf.type === 'fate') {
|
||||||
|
return [-1, 0, 1].includes(curNum);
|
||||||
|
}
|
||||||
|
return curNum <= rollConf.dieSize && curNum > (rollConf.dPercent.on ? -1 : 0);
|
||||||
|
};
|
||||||
rollConf.reroll.nums = rollConf.reroll.nums.filter(validNumFilter);
|
rollConf.reroll.nums = rollConf.reroll.nums.filter(validNumFilter);
|
||||||
rollConf.critScore.range = rollConf.critScore.range.filter(validNumFilter);
|
rollConf.critScore.range = rollConf.critScore.range.filter(validNumFilter);
|
||||||
rollConf.critFail.range = rollConf.critFail.range.filter(validNumFilter);
|
rollConf.critFail.range = rollConf.critFail.range.filter(validNumFilter);
|
||||||
rollConf.exploding.nums = rollConf.exploding.nums.filter(validNumFilter);
|
rollConf.exploding.nums = rollConf.exploding.nums.filter(validNumFilter);
|
||||||
|
rollConf.success.range = rollConf.success.range.filter(validNumFilter);
|
||||||
|
rollConf.fail.range = rollConf.fail.range.filter(validNumFilter);
|
||||||
|
|
||||||
if (rollConf.reroll.on && rollConf.reroll.nums.length === rollConf.dieSize) {
|
if (rollConf.reroll.on && rollConf.reroll.nums.length === (rollConf.type === 'fate' ? 3 : rollConf.dieSize)) {
|
||||||
throw new Error('NoRerollOnAllSides');
|
throw new Error('NoRerollOnAllSides');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loggingEnabled && log(LT.LOG, `RollConf after cleanup: ${JSON.stringify(rollConf)}`);
|
||||||
|
|
||||||
return rollConf;
|
return rollConf;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue